You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用telnetlib3仅获取Telnet命令的纯净执行结果?

实现仅获取show all-outlets-status命令的清晰结果

完全可行,你可以通过跟踪命令执行状态、过滤无关内容来提取目标命令的输出。修改后的代码如下:

#!/usr/bin/env python3

import asyncio
import telnetlib3

async def shell(reader, writer):
    rules = [
            ('login as:', '.....'),
            ('password:', '......'),
            ('PE-08I-532236$ ', 'show all-outlets-status'),
            ('PE-08I-532236$ ', 'exit'),
            (') >', 'logout'),
            ]

    ruleiter = iter(rules)
    expect, send = next(ruleiter)
    capturing_output = False
    target_output = []

    while True:
        outp = await reader.read(1024)
        if not outp:
            break

        if expect in outp:
            # 发送命令时,如果是目标命令,开启捕获状态
            if send == 'show all-outlets-status':
                capturing_output = True
            writer.write(send)
            writer.write('\r\n')
            try:
                expect, send = next(ruleiter)
            except StopIteration:
                break

        # 处理捕获的输出
        if capturing_output:
            # 过滤掉命令回显和下一个提示符
            if 'show all-outlets-status' in outp:
                # 移除命令本身的回显行
                outp = outp.replace('show all-outlets-status\r\n', '')
            if 'PE-08I-532236$ ' in outp:
                # 遇到下一个提示符,停止捕获
                capturing_output = False
                # 移除提示符部分
                outp = outp.split('PE-08I-532236$ ')[0]
            # 收集有效输出
            if outp.strip():
                target_output.append(outp.strip())

    # 打印整理后的目标命令结果
    print('\n'.join(target_output))

async def main():
    reader, writer = await telnetlib3.open_connection('10.0.0.59', 23, shell=shell)
    await writer.protocol.waiter_closed

if __name__ == '__main__':
    asyncio.run(main())

关键修改说明:

  • 新增capturing_output布尔变量,标记是否处于捕获目标命令输出的状态
  • 新增target_output列表,用于存储过滤后的有效结果
  • 当发送show all-outlets-status命令时,开启捕获状态
  • 捕获过程中,过滤掉命令回显和后续的提示符,只保留命令的实际输出内容
  • 最后统一打印整理后的清晰结果,不再输出所有服务器返回的内容

内容的提问来源于stack exchange,提问作者Fabio Marzocca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:55:16