我想连接到~/.ssh/config
中列出的远程主机,运行命令(具体为ps
)并提取输出。
哪一种最简单的工具可以做到这一切?
答案 0 :(得分:2)
我建议你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
答案 1 :(得分:2)
执行此操作的最简单方法可能是在命令行中使用'while'循环 - 这假设您不一定需要使用Python ...
对于包含主机地址列表的文件(hostlist.txt):
#!/bin/bash
while read p; do
ssh user1@$p ps
done < hostlist.txt
如果你真的想使用Python,你可以设置一个类似的循环,并可能使用Python的subprocess
模块来调用ssh ......
答案 2 :(得分:0)
我只想做
def remote_ps(host):
import subprocess
sp = subprocess.Popen(['ssh', host, 'ps'], stdout=subprocess.PIPE)
out, err = sp.communicate()
return sp.wait(), out