~/.ssh/config
にリストされているリモート ホストに接続し、コマンドを (ps
特に) 実行して、出力を抽出したいと考えています。
これらすべてを実行できる最も簡単なツールはどれですか?
おそらくこれを行う最も簡単な方法は、コマンド ラインで 'while' ループを使用することです。これは、必ずしも Python を使用する必要がないことを前提としています...
ホスト アドレスのリストを含むファイル (hostlist.txt) の場合:
#!/bin/bash
while read p; do
ssh user1@$p ps
done < hostlist.txt
本当に Python を使用したい場合は、同様のループをセットアップし、Python のsubprocess
モジュールを使用して ssh を呼び出すことができます...
Python ネイティブ ssh ライブラリであるParamikoをお勧めします。
使用方法の (非常に) 基本的な例 (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
私は単にします
def remote_ps(host):
import subprocess
sp = subprocess.Popen(['ssh', host, 'ps'], stdout=subprocess.PIPE)
out, err = sp.communicate()
return sp.wait(), out