我正在尝试通过telnet向服务器发送一些命令。这是手工完成的,但是我被要求使用python自动化它。
我的代码开始这样启动:
import telnetlib
HOST = "xxx.xxx.xxx.xxx"
PORT = xx
print("connecting...")
tn = telnetlib.Telnet(HOST, PORT)
tn.read_until(b"250")
print("connection established!nsending ehlo...")
tn.write(b"EHLO test.com")
tn.read_until(b"250")
print("response received")
...
如果我手工输入命令,则有效。但是脚本几分钟后就取代了以下输出:
connecting...
connection established!
sending ehlo...
Traceback (most recent call last):
File "telnet_test.py", line 11, in <module>
tn.read_until(b"250")
File "/usr/lib/python3.6/telnetlib.py", line 327, in read_until
return self.read_very_lazy()
File "/usr/lib/python3.6/telnetlib.py", line 403, in read_very_lazy
raise EOFError('telnet connection closed')
EOFError: telnet connection closed
根据输出,我的telnet连接关闭了,但我看不到为什么!也许很重要:启动输出后,connecting...
持续了几分钟,然后将其余的输出(包括例外)打印出来。read_until()
功能阻止的时间比必要的时间更长,所以我的连接Timouts?我该如何解决?
信用用户molbdnilo
我需要在每个命令上添加一个newline字符。
所以 tn.write(b"EHLO test.com")
变成 tn.write(b"EHLO test.comn")