使用Python与来自文件的已知主机进行SSH,以提取命令的结果

时间:2012-11-23 15:22:29

标签: python ssh

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

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

3 个答案:

答案 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