【发布时间】:2013-11-22 22:10:53
【问题描述】:
我正在尝试打开从一个 Linux 机器到另一个 Linux 机器的 SSH 管道,运行一些 shell 命令,然后关闭 SSH。
我无法控制任何一个盒子上的包裹,所以织物或 paramiko 之类的东西是不可能的。
我有幸使用以下代码运行一个 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>
【问题讨论】:
-
你可能想看看fabric,这是一个已经做了你想做的事情的框架fabric.readthedocs.org/en/1.8/#
-
我同意 Fabric 会很有用。不幸的是,我无法控制这两个盒子,只能访问。
标签: python ssh subprocess