簡體   English   中英

Python telnetlib客戶端似乎沒有打開到服務器的telnet連接

[英]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”命令,這就是連接關閉的原因。

連接到終端的Telnet服務器

我錯過了什么嗎? 為什么這在終端而不是在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM