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

Python循环中字典出现重复值:多设备远程命令执行异常

问题解决:pexpect多设备执行命令输出重复问题

你的代码中所有设备的命令输出都显示为最后一台设备的结果,核心原因是**command_out字典在设备循环外部定义,所有设备条目都引用了同一个字典对象**。每次循环只是修改这个字典的内容,最终所有设备对应的都是最后一次循环修改后的字典。另外代码里还有个笔误:child.pexpect('assword')应该改成child.expect('assword')。

修正后的代码

import pexpect
import sys

devices = ['10.10.10.10', '10.10.10.11']
commands = ['cmd1','cmd2']

final_dict = {}

for dev in devices:
    # 将command_out移至设备循环内部,每个设备创建独立字典
    command_out = {}
    child = pexpect.spawn('ssh user@' + dev)
    child.expect('assword')
    child.sendline('mypass')
    child.expect('#')
    for cmd in commands:
        child.sendline(cmd)
        child.expect('#')
        command_out[cmd] = child.before
    child.sendline('exit')
    final_dict[dev] = command_out

print(final_dict)

修正说明

把command_out = {}移动到for dev in devices:循环内部后,每处理一台设备都会生成一个全新的字典来存储该设备的命令输出,这样final_dict中每个设备对应的都是独立的字典,不会被后续设备的输出覆盖,就能得到你期望的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 07:27:08