我编写了一个简单的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:24490child_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')
此时用户仍然登录此框。
答案 0 :(得分:0)
你可以尝试没有预期的尾随空白
child.expect('username@device-name>')
而不是
child.expect('username@device-name> ')