Python telnet连接关闭

Python telnet连接关闭,python,connection,timeout,telnet,telnetlib,Python,Connection,Timeout,Telnet,Telnetlib,我正试图通过telnet向服务器发送一些命令。这已经手工完成了很多次,但我被要求使用python实现自动化 我的代码是这样开始的: 导入telnetlib HOST=“xxx.xxx.xxx.xxx” 端口=xx 打印(“连接…”) tn=telnetlib.Telnet(主机、端口) tn.read_直到(b“250”) 打印(“已建立连接!\n正在发送ehlo…”) tn.write(b“EHLO test.com”) tn.read_直到(b“250”) 打印(“收到回复”) ... 如

我正试图通过telnet向服务器发送一些命令。这已经手工完成了很多次,但我被要求使用python实现自动化

我的代码是这样开始的:

导入telnetlib
HOST=“xxx.xxx.xxx.xxx”
端口=xx
打印(“连接…”)
tn=telnetlib.Telnet(主机、端口)
tn.read_直到(b“250”)
打印(“已建立连接!\n正在发送ehlo…”)
tn.write(b“EHLO test.com”)
tn.read_直到(b“250”)
打印(“收到回复”)
...
如果我手动输入命令,它就会工作。但脚本在几分钟后中止,输出如下:

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
正在连接。。。
建立连接!
正在发送ehlo。。。
回溯(最近一次呼叫最后一次):
文件“telnet_test.py”,第11行,在
tn.read_直到(b“250”)
文件“/usr/lib/python3.6/telnetlib.py”,第327行,只读
返回self.read_very_lazy()
文件“/usr/lib/python3.6/telnetlib.py”,第403行,以read\u very\u格式
提高EOFError('telnet连接关闭')
EOR:telnet连接已关闭
根据输出,我的telnet连接关闭了,但我不明白为什么!? 可能很重要:启动后,输出会显示
连接…
几分钟,然后打印包括异常在内的其余输出。
read\u until()
函数阻塞的时间是否超过必要的时间,因此我的连接超时?我该如何解决这个问题呢?

归功于用户molbdnilo

我需要在每个命令上添加一个换行符


因此
tn.write(b“EHLO test.com”)
变成
tn.write(b“EHLO test.com\n”)

我认为您需要在每个命令后发送一个换行符,至少在您尝试与SMTP服务器通信时是这样。(服务器可能超时,因为您从未发送过完整的命令。)您可以尝试设置_debuglevel()以获取其他反馈。此外,您还可以循环read_some()以了解连接发生了什么。