我正在尝试使用Pexpect模块从防火墙获取数据(更具体地说,pxssh)。登录过程很好,问题正好出现在" i"作业行:
if i==2: # password or passphrase
self.sendline(password)
# Up to here, everything is okay#
i = self.expect(["(?i)are you sure you want to continue connecting", original_prompt, "(?i)(?:password)|(?:passphrase for key)", "(?i)permission denied", "(?i)terminal type", TIMEOUT])
当用户登录时,这是防火墙的对话框:
密码:
上次登录时间:2017年9月25日星期一06:20:50来自IPXXXX
自上次成功登录以来失败的尝试次数:0
管理员@ DEVICE(活性)GT;
我认为问题在于Pexpect不会期望这两行上次登录和尝试失败次数,因此代码执行会在我之前说过的行中停止。
有人可以帮助我吗?
---- ---- UPDATE
防火墙使用的Shell:
admin@DEVICE(active)>
我的pexpect类的初始化代码:
def __init__(self, host, user, password):
str = 'ssh '+user+'@'+host
self.user = user
self.child = pexpect.spawn ('ssh '+user+'@'+host)
self.child.expect ('Password:.*')
self.child.sendline (password)
self.child.expect (user+'.*>')
...
)
事先感谢,
麦克