[英]Python telnetlib client doesn't appear to be opening telnet connection to server
我试图打开一个telnet连接,写一个字符串,然后从Python中的telnet服务器打印所有内容。 我假设我遗漏了一些明显的东西,因为文档看起来非常不言自明,我认为在终端中完全相同的工作正常。
这是Python代码:
import telnetlib
telnet = telnetlib.Telnet()
telnet.open('192.168.1.128', 9801, 10)
telnet.write("SYSTEM_CAL")
print(telnet.read_all())
这个超时10秒后/没有成功连接到我假设的服务器。 这是输出:
Traceback (most recent call last):
File "/Volumes/Work/Scripting/Telnet Test/main.py", line 9, in <module>
print(telnet.read_all())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/telnetlib.py", line 385, in read_all
self.fill_rawq()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/telnetlib.py", line 576, in fill_rawq
buf = self.sock.recv(50)
socket.timeout: timed out
在下图中我连接到终端中的同一台服务器,一切正常。 最后,我给出服务器采用的“DISCONNECT”命令,这就是连接关闭的原因。
我错过了什么吗? 为什么这在终端而不是在Python中工作?
我想你太早发出你的命令,接收端却忽略了它。 首先尝试阅读横幅:
print(telnet.read_until("Welcome."))
telnet.write("SYSTEM_CAL")
print(telnet.read_all())
编辑:
我还注意到在“SYSTEM_CAL”末尾没有行终止序列。 我相信,在互动环节中,你按↵Enter键后,你输入“SYSTEM_CAL”。 如果是这种情况,您需要在write()
调用结束时添加\\n
:
telnet.write("SYSTEM_CAL\n")
根据您问题之外的其他因素,您可能需要以下其中一项:
telnet.write("SYSTEM_CAL\r")
telnet.write("SYSTEM_CAL\r\n")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.