挂在ssh连接上的Pexpect

时间:2018-01-17 17:46:37

标签: ssh pexpect

我编写了一个简单的python脚本来连接(通过ssh)到Palo Alto防火墙,通过cli收集一些数据。但是,一旦它连接到盒子,它就不会执行命令,它只会挂起以下错误:

追踪(最近一次呼叫最后一次):

文件" myscript.py",第97行,

connectExpect()  

文件" myscript.py",第58行,在connectExpect

child.expect('username@device-name> ')

文件" /usr/lib/python2.7/site-packages/pexpect.py",第1311行,期待

return self.expect_list(compiled_pattern_list, timeout, searchwindowsize)

文件" /usr/lib/python2.7/site-packages/pexpect.py",第1325行,在expect_list中

return self.expect_loop(searcher_re(pattern_list), timeout, searchwindowsize)

文件" /usr/lib/python2.7/site-packages/pexpect.py",第1409行,在expect_loop中

raise TIMEOUT (str(e) + '\n' + str(self))

pexpect.TIMEOUT:read_nonblocking()中超出了超时。

版本:2.3($ Revision:399 $)

命令:/ usr / bin / ssh

args:[' / usr / bin / ssh',' user @ {ip address}']

搜索者:searcher_re:

0: re.compile("username@device-name> ")

缓冲区(最后100个字符):2018年2月14日来自{server name}

欢迎用户名。

用户名@设备名称>

之前(最后100个字符):2018年2月14日来自{server name}

欢迎用户名。

用户名@设备名称>

之后:

匹配:无

match_index:无

exitstatus:无

flag_eof:False

pid:24490

child_fd:3

关闭:错误

超时:30

分隔符:

logfile:无

logfile_read:无

logfile_send:无

maxread:2000

ignorecase:False

searchwindowsize:无

delaybeforesend:0.05

延迟关闭:0.1

delayafterterminate:0.1

这是脚本:

child = pexpect.spawn('ssh username@ipaddress')
child.expect('Password: ')
child.sendline('userpassword')
child.expect('username@device-name> ')  # User is now logged in 

以下命令不会执行,脚本会挂起

上面提供的错误

child.sendline('command1')
child.expect('username@device-name> ')
child.sendline('command2')

此时用户仍然登录此框。

1 个答案:

答案 0 :(得分:0)

你可以尝试没有预期的尾随空白

child.expect('username@device-name>')

而不是

child.expect('username@device-name> ')