我的代码如下:
def op():
cmd = "ssh -t user@ip top -bn 1 >data.txt"
os.system(cmd)
#does some other operations and then returns some variables, say a,b,c
return (a,b,c)
k=1
while k<5:
print(op())
k+=1
第一次while
循环运行(在k = 1时),我得到了预期的变量值。但是,在随后的每次迭代中,我都会收到以下错误消息:
Connection to 192.168.xxx.xxx closed.
我所有的变量也是空的。如何解决?
我认为这与“关闭” SSH连接有关,然后在每次迭代开始时重新启动它,但我不知道该怎么做。
答案 0 :(得分:1)
此答案可能不是您问题的直接解决方案。但是,始终建议使用python ssh接口,而不是直接执行shell命令。
Paramiko是一种这样的python sshv2实现。
当前文档:http://docs.paramiko.org/en/2.6/
示例代码: SSH examples
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect('localhost', username=username, password=password)
except paramiko.SSHException:
print "Connection Failed"
quit()
stdin,stdout,stderr = ssh.exec_command("top -bn")
for line in stdout.readlines():
print line.strip()
ssh.close()