Python telnetlib以其他方式按Enter键,可以';当服务器刚刚启动时,请不要继续使用脚本
我在linux虚拟机上使用telnetlib运行python脚本 99%的时间,tn.write('\n')工作正常 但有一种情况是服务器刚刚启动, 在真正的控制台中,第一个登录的用户需要在看到登录信息后按键盘上的Enter键才能继续。 如果他们不按Enter键,他们将永远保留登录信息 这次tn.write('\n')的工作原理与在控制台中手动按Enter键的工作原理不同。 即使不是使用下面的脚本按Enter键的方式:Python telnetlib以其他方式按Enter键,可以';当服务器刚刚启动时,请不要继续使用脚本,python,console,automated-tests,telnet,telnetlib,Python,Console,Automated Tests,Telnet,Telnetlib,我在linux虚拟机上使用telnetlib运行python脚本 99%的时间,tn.write('\n')工作正常 但有一种情况是服务器刚刚启动, 在真正的控制台中,第一个登录的用户需要在看到登录信息后按键盘上的Enter键才能继续。 如果他们不按Enter键,他们将永远保留登录信息 这次tn.write('\n')的工作原理与在控制台中手动按Enter键的工作原理不同。 即使不是使用下面的脚本按Enter键的方式: tn.write('\r\n') tn.write("\r\n".encod
tn.write('\r\n')
tn.write("\r\n".encode('ascii'))
# or with time.sleep(1) inserted with any value
我的脚本可以使用密码连接到服务器,就像每次一样
通过使用read_some或read_eager,我非常确定控制台上(我的脚本遇到)只有一个信息表,没有提示,没有要求用户按Enter键的指示,只要按Enter键,就可以进入控制台并得到第一个提示
(如果我手动登录,按Enter和exit,我的脚本运行平稳,因为它不再是第一个用户。)尝试调用debug,我通常在开始时使用它:
tn = telnetlib.Telnet(ip_to_connect)
tn.set_debuglevel(5)
这有助于我获取控制台返回的信息,当它是ASCII控制台时,您将得到类似这样的信息:'\xff\xfb\x01\xff\xfb\x03\xff\xfd\x18\r\n'并且可以在
read.until()
中使用此信息。通过从telnet的角度跳出,我使用os.system或SUBSPROCESS.call来键入enter。。它似乎是有效的,还有其他方法吗?它不是每次都有效,拜托,任何人都能弄明白吗?ssh是否也有同样的问题(“重启后无法通过telnet登录”)?尝试远程运行命令