问题描述
用于连接设备并获取设备详细信息的python代码运行正常,突然抛出了身份验证失败错误,并提供了以下错误日志。
15:30:18.786 INFO Trying 192.168.43.121...
Connected
15:30:18.786 INFO Seen connected word
15:30:18.786 INFO Trying 192.168.43.121...
Connected
15:30:18.787 INFO to 192.168.43.121.
Escape character is '^]'.
User Access Verification
Username:
15:30:18.787 INFO Seen Username prompt XXadminXX
15:30:18.787 INFO to 192.168.43.121.
Escape character is '^]'.
User Access Verification
Username:
15:30:18.988 INFO
Username:
15:30:18.988 INFO Seen Username prompt XXadminXX
15:30:18.988 INFO
Username:
15:30:19.007 INFO admin
Password:
15:30:19.008 INFO Seen Password prompt XLoginDevice1XX
15:30:19.008 INFO admin
Password:
15:30:23.027 INFO
% Authentication failed
Username:
15:30:23.027 INFO Seen Username prompt XXadminXX
15:30:23.028 INFO
% Authentication failed
Username:
15:30:23.050 INFO LoginDevice1
Password:
15:30:23.050 INFO Seen Password prompt XXLoginDevice1XX
15:30:23.050 INFO LoginDevice1
Password:
15:30:29.158 INFO Connect Telnet error : End Of File (EOF). Exception style platform.
<pexpect.pty_spawn.spawn object at 0x7f25e70e7d30>
command: /usr/bin/telnet
args: [b'/usr/bin/telnet',b'92.168.43.121']
buffer (last 100 chars): ''
before (last 100 chars): ' \r\n\r\n% Authentication failed\r\nConnection closed by foreign host.\r\r\n'
after: <class 'pexpect.exceptions.EOF'>
match: None
match_index: None
exitstatus: 1
flag_eof: True
pid: 29737
child_fd: 8
closed: False
timeout: 30
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: None
delayafterclose: 0.1
delayafterterminate: 0.1
如果我尝试通过使用腻子提供用户名/密码来手动登录,则可以正常工作。下面的代码段涉及通过telnet连接到设备。
代码段:
patternList = ['Username:','Password:','.*\-[0-9]+>','.*\-?[0-9]+#','Connected','.*config.*#','.*login:']
session = pexpect.spawn('telnet {}'.format(self.IP),encoding='utf-8',codec_errors='ignore')
cpl = session.compile_pattern_list(patternList)
while True:
i = session.expect_list(cpl)
out = session.before + session.after
log.info(out)
if i == 0:
log.info("Seen Username prompt XX%sXX"%User,also_console=True)
session.sendline(User)
out = session.before + session.after
log.info(out)
elif i == 1:
log.info("Seen Password prompt XX%sXX"%Passwd,also_console=True)
session.sendline(Passwd)
out = session.before + session.after
log.info(out)
elif i == 2:
log.info("seen > prompt",also_console=True)
session.sendline('enable')
out = session.before + session.after
log.info(out)
elif i == 3:
log.info("Prompt seen")
out = session.before + session.after
log.info(out)
break
elif i == 4:
log.info("Seen connected word",also_console=True)
session.sendline('')
out = session.before + session.after
log.info(out)
elif i == 5:
session.sendline('end')
out = session.before + session.after
log.info(out)
elif i == 6:
log.info("Seen Login prompt XX%sXX"%User,also_console=True)
session.sendline(User)
out = session.before + session.after
log.info(out)
session.sendline('terminal length 0')
session.expect('#')
out = session.before + session.after
log.info(out)
session.sendline('show version')
session.expect('#')
out = session.before + session.after
log.info(out)
log.info("Login success",also_console=True)
log.info(session.before + session.after)
return session
如何解决此问题?
谢谢, 莫汉
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)