Мое требование - запустить команду на нескольких хостах с центрального сервера, имена хостов должны быть прочитаны из файла.(ssh-соединение без пароля)
Я могу добиться этого с помощью скрипта bash, приведенного ниже, кто-нибудь может помочь в разработке ниже на python?
for i in $(cat $location);
do echo $i;
sudo -i -u username ssh -q -o "StrictHostKeyChecking no" -o "NumberOfPasswordPrompts 0" -o ConnectTimeout=2 $i "cd /root/abc/$i"_"${append}/ && ./install --type R;done | tee -a $LOG1 >> $LOG 2>> $LOG &
Поскольку у меня есть базовые знанияв Python, но попробовал ниже, который работает, как ожидалось, для одного хоста.
Моя попытка:
import os
import subprocess
import sys
HOST="hostname"
COMMAND = raw_input("Enter the Command: ")
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if result == []:
error = ssh.stderr.readlines()
print >>sys.stderr, "ERROR: %s" % error
else:
print "cmd output"
print result