Выполнить на нескольких - PullRequest
0 голосов
/ 04 июля 2019

Мое требование - запустить команду на нескольких хостах с центрального сервера, имена хостов должны быть прочитаны из файла.(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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...