Python telnetlib客户端不';t似乎正在打开与服务器的telnet连接

Python telnetlib客户端不';t似乎正在打开与服务器的telnet连接,python,python-2.7,terminal,telnet,telnetlib,Python,Python 2.7,Terminal,Telnet,Telnetlib,我试图打开一个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())

我试图打开一个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
回溯(最近一次呼叫最后一次):
文件“/Volumes/Work/Scripting/Telnet Test/main.py”,第9行,在
打印(telnet.read\u all())
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/telnetlib.py”,第385行,全部读取
self.fill_rawq()
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/telnetlib.py”,第576行,填写
buf=自存储接收(50)
socket.timeout:超时
在下图中,我连接到终端中的同一台服务器,一切正常。最后,我给出了服务器执行的“DISCONNECT”命令,这就是连接关闭的原因


我错过什么了吗?为什么它在终端中工作而不是在Python中工作?

我想您发送命令太早了,而接收端忽略了它。首先尝试阅读横幅:

print(telnet.read_until("Welcome."))
telnet.write("SYSTEM_CAL")
print(telnet.read_all())
编辑:

我还注意到,在“SYSTEM_CAL”的末尾没有行终止序列。我想,在互动会话中,您按↵ 在键入“系统校准”后输入。如果是这种情况,则需要在
write()
调用的末尾添加
\n

telnet.write("SYSTEM_CAL\n")
根据您问题之外的其他因素,您可能需要以下选项之一:

telnet.write("SYSTEM_CAL\r")
telnet.write("SYSTEM_CAL\r\n")

当我这样做的时候,我收到了欢迎的信息,但是它超时了。我没有得到命令:OK,这应该是由编写系统生成的_CAL@createer-我想知道您的telnet服务器是否需要行终止符来处理命令。查看我最近的编辑。