Python Parallel SSH 仅获取命令输出
Posted
技术标签:
【中文标题】Python Parallel SSH 仅获取命令输出【英文标题】:Python Parallel SSH get only command output 【发布时间】:2016-03-09 05:07:45 【问题描述】:我是 Python 新手,我希望对设备运行多个并行 ssh 连接和命令。我正在使用pssh
link。
问题是设备在连接后返回一些大标题,如 20-30 行。
当我使用下面的代码时,打印出来的是命令的结果,但在顶部还有登录后打印的大标题。
hosts = ['XX.XXX.XX.XXX']
client = ParallelSSHClient(hosts, user='XXXX', password='XXXXX')
output = client.run_command('command')
for host in output:
for line in output[host]['stdout']:
print line
无论如何我都能得到命令输出?
【问题讨论】:
【参考方案1】:我不确定我理解你的意思。 我也在使用 pssh,似乎我正在使用与您相同的方法来打印我的命令输出,见下文:
client = pssh.ParallelSSHClient(nodes, pool_size=args.batch, timeout=10, num_retries=1)
output = client.run_command(command, sudo=True)
for node in output:
for line in output[node]['stdout']:
print '[0] 1'.format(node, line)
您能详细说明一下吗?也许提供一个你运行的命令和你得到的输出的例子?
【讨论】:
我不得不真正放弃 ParallelSSH 并转向 paramiko 和线程。设备在登录时输出标准输出。我还必须对 SSHClient 源代码进行一些更改,因为该设备没有 bash,所以我认为最好放弃它。如果你想继续聊天,我仍然遇到一些性能问题。 如果有问题的设备在登录时输出到标准输出,您将在您使用的任何 SSH 客户端中看到该输出。标准输出就是标准输出。查看更改日志,从去年开始,parallel-ssh 不再需要 bash,可能想看看它是否能解决您的性能问题。提示 - 线程在并行网络连接中表现不佳。【参考方案2】:结帐 pssh。 该工具使用多线程,执行速度快。 你可以阅读更多关于它的信息here。
【讨论】:
以上是关于Python Parallel SSH 仅获取命令输出的主要内容,如果未能解决你的问题,请参考以下文章
使用 Parallel::ForkManager 并行执行命令
python parallel发送1000+ url请求并获取内容信息
将结果数据附加到 Parallel::ForkManager Perl 中的标量变量