Я пытаюсь открыть SSH-трубу из одного Linux-бокса в другой, запустить несколько команд оболочки, а затем закрыть SSH.Подпроцесс Python - запуск нескольких команд оболочки по SSH
У меня нет контроля над пакетами на любой коробке, поэтому что-то вроде ткани или парамико не может быть и речи.
Мне посчастливилось использовать следующий код для запуска одной команды bash, в данном случае «время безотказной работы», но я не уверен, как выпустить одну команду за другой. Я ожидаю что-то вроде:
sshProcess = subprocess.call('ssh ' + <remote client>, <subprocess stuff>)
lsProcess = subprocess.call('ls', <subprocess stuff>)
lsProcess.close()
uptimeProcess = subprocess.call('uptime', <subprocess stuff>)
uptimeProcess.close()
sshProcess.close()
Какую часть модуля подпроцесса мне не хватает?
Благодаря
pingtest = subprocess.call("ping -c 1 %s" % <remote client>,shell=True,stdout=open('/dev/null', 'w'),stderr=subprocess.STDOUT)
if pingtest == 0:
print '%s: is alive' % <remote client>
# Uptime + CPU Load averages
print 'Attempting to get uptime...'
sshProcess = subprocess.Popen('ssh '+<remote client>, shell=True,stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
sshProcess,stderr = sshProcess.communicate()
print sshProcess
uptime = subprocess.Popen('uptime', shell=True,stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
uptimeProcess,stderr = uptimeProcess.communicate()
uptimeProcess.close()
print 'Uptime : ' + uptimeProcess.split('up ')[1].split(',')[0]
else:
print "%s: did not respond" % <remote client>
Возможно, вам понравилась ткань, которая представляет собой структуру, которая уже делает вид вещей, которые вы хотите использовать http: //fabric.readthedocs .org/ru/1.8/# – Vorsprung
Я согласен, что Fabric был бы полезен. К сожалению, я не контролирую ни одну из них, просто получаю доступ. – user2978190