telnetlib 其他按回车的方法,当服务器刚启动时无法继续脚本
我在Linux虚拟机上用telnetlib运行Python脚本。
99%的情况下,tn.write('\n')都能顺利工作。
但是有一种情况是,当服务器刚启动时,第一次登录的用户需要在看到登录信息后按下键盘上的Enter键才能继续。如果他们不按Enter,就会一直停留在登录信息上。
在这种情况下,tn.write('\n')并不能像在控制台手动按Enter那样有效。
而且下面这个脚本也无法模拟按Enter:
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然后退出,脚本就能顺利运行,因为那时就不是第一次登录的用户了。)
1 个回答
0
试着调用调试功能,我通常在开始的时候这样做:
tn = telnetlib.Telnet(ip_to_connect)
tn.set_debuglevel(5)
这样可以帮助我查看控制台返回了什么。当控制台是ASCII格式时,你会看到类似这样的内容:'\xff\xfb\x01\xff\xfb\x03\xff\xfd\x18\r\n'。这些信息可以用在read.until()
中。