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

如何在Paramiko中一次性打印多条exec_command命令的执行结果?

如何一次性打印多条命令的执行结果?

你现在遇到的问题是每次调用exec_command时,都用同一个stdout变量接收结果,导致前两次的输出被第三次的覆盖了。要解决这个问题,核心思路就是不要重复复用同一个变量存储输出,而是把每条命令的结果单独保存,最后再一起输出。

这里有两种实用的解决方案:

方案1:单独存储每个命令的输出

直接给每条命令的输出分配独立的变量,最后拼接起来打印:

# 分别执行三条命令,用不同变量保存stdout对象
_, stdout_version, _ = client1.exec_command('show version')
_, stdout_interface, _ = client1.exec_command('show interfaces ge-0/0/10')
_, stdout_routing_engine, _ = client1.exec_command('show chassis routing-engine')

# 一次性打印所有结果,用换行分隔让内容更清晰
print(stdout_version.read() + '\n\n' + stdout_interface.read() + '\n\n' + stdout_routing_engine.read())

这里用_忽略了不需要的stdin和stderr(如果需要处理错误信息,可以把_换成对应的变量),用不同的变量存储每条命令的输出对象,最后把三个read()的结果拼接,中间加两个换行让不同命令的输出区分开。

方案2:用列表批量收集输出(更灵活)

如果后续可能要添加更多命令,用列表循环收集结果会更简洁易维护:

# 把要执行的命令放到列表里
commands = [
    'show version',
    'show interfaces ge-0/0/10',
    'show chassis routing-engine'
]

output_list = []
for cmd in commands:
    _, stdout, _ = client1.exec_command(cmd)
    # 读取输出并添加到列表
    output_list.append(stdout.read())

# 用换行符把列表里的所有结果拼接起来打印
print('\n\n'.join(output_list))

这种方式的好处是,以后要加新命令,只需要在commands列表里追加就行,不用修改后续的打印逻辑。

两种方法都能实现你要的“一条print语句打印所有三条命令输出”的需求,根据你的实际场景选就行~

内容的提问来源于stack exchange,提问作者sivabala senna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:50:01