Pxssh重新连接Python(pexpect)

时间:2014-08-14 12:50:29

标签: python pexpect

我需要使用pxssh在一个脚本中执行多个连接。 试着这样做:

import pxssh
ip = 'ip'
username = 'username'
password = 'password'
s = pxssh.pxssh()
s.login (ip, username, password)
s.sendline('command')
s.prompt()
print s.before
s.logout()
s.login(ip2, username, password)
etc

但在第二个连接上收到错误:AssertionError: The pid member must be None. 每次只有一个连接通过。 如何让它发挥作用?

1 个答案:

答案 0 :(得分:6)

您只需要创建一个新的pxssh对象。 pxssh对象的构造函数创建一个进程并生成ssh。注销与远程系统断开连接,这使连接无效但不会重置对象。像这样:

...
s.logout()
s.close()
s = pxssh.pxssh()
s.login(ip2, ...)

s.close()不是绝对必要的,但它是一个好主意,否则,在原始对象被垃圾收集之前,基础文件描述符不会被关闭。