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

Parallel-ssh单Shell中循环执行命令无响应问题求助

问题解决:Parallel-SSH单Shell循环执行命令无后续输出

问题原因

  1. 原代码直接遍历初始的shell会话列表,第一次读取stdout后,生成器已耗尽,后续循环无法获取新输出。
  2. 未正确接收run_shell_commands的返回结果,该返回值才是每次命令执行的结果对象,包含对应命令的输出流。
  3. 未等待命令执行完成就读取输出,可能导致输出不完整或无内容。

修正后的代码

from pssh.clients import ParallelSSHClient

pclient = ParallelSSHClient(['ipaddress'], user="username", password='password')
shell = pclient.open_shell()

# 执行前置初始化命令
init_cmds = ["echo 'Hello, world!' > example.txt"]
pclient.run_shell_commands(shell, init_cmds)
# 等待初始化命令执行完成
for sess in shell:
    sess.wait_finished()

# 循环执行cat命令
for _ in range(20):
    # 执行命令并获取本次的结果对象
    cmd_results = pclient.run_shell_commands(shell, ["cat example.txt"])
    for result in cmd_results:
        # 等待命令执行完毕
        result.wait_finished()
        # 读取并打印输出
        for line in result.stdout:
            print(line.strip())

关键修改点

  • 每次执行命令后,通过run_shell_commands的返回值cmd_results获取本次命令的输出,而非复用初始shell对象。
  • 添加wait_finished()确保命令完全执行,避免因输出缓冲区未刷新导致的无内容问题。
  • 读取输出时处理每行内容(如strip()),避免多余换行符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:35:22