-1

我想连接到 中列出的远程主机~/.ssh/config,运行命令(ps特别是)并提取输出。

哪个是可以做到这一切的最简单的工具?

4

3 回答 3

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
于 2012-11-23T15:32:56.933 回答
2

可能最简单的方法是在命令行中使用“while”循环 - 这假设您不一定需要使用 Python ...

对于包含主机地址列表的文件 (hostlist.txt):

#!/bin/bash

while read p; do 
    ssh user1@$p ps
done < hostlist.txt

如果你真的想使用 Python,你可以设置一个类似的循环,并可能使用 Python 的subprocess模块来调用 ssh ...

于 2012-11-23T16:12:52.050 回答
0

我会简单地做

def remote_ps(host):
    import subprocess
    sp = subprocess.Popen(['ssh', host, 'ps'], stdout=subprocess.PIPE)
    out, err = sp.communicate()
    return sp.wait(), out
于 2012-11-23T16:00:17.870 回答