0

我在 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 并退出,我的脚本运行顺利,因为它不再是第一个用户。)

4

1 回答 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()

于 2019-05-22T14:28:37.870 回答