我想连接到 中列出的远程主机~/.ssh/config
,运行命令(ps
特别是)并提取输出。
哪个是可以做到这一切的最简单的工具?
我建议你Paramiko,一个 python 原生 ssh 库。
关于如何使用它的(非常)基本示例(基于 ssh-key 的连接):
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('127.0.0.1')
stdin, stdout, stderr = client.exec_command('date')
for line in stdout:
print line,
print
输出:
Fri Nov 23 17:36:09 EET 2012
可能最简单的方法是在命令行中使用“while”循环 - 这假设您不一定需要使用 Python ...
对于包含主机地址列表的文件 (hostlist.txt):
#!/bin/bash
while read p; do
ssh user1@$p ps
done < hostlist.txt
如果你真的想使用 Python,你可以设置一个类似的循环,并可能使用 Python 的subprocess
模块来调用 ssh ...
我会简单地做
def remote_ps(host):
import subprocess
sp = subprocess.Popen(['ssh', host, 'ps'], stdout=subprocess.PIPE)
out, err = sp.communicate()
return sp.wait(), out