telnetlib 其他按回车的方法,当服务器刚启动时无法继续脚本

0 投票
1 回答
1554 浏览
提问于 2025-04-17 21:50

我在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()中。

撰写回答