【问题标题】:How to read telnet sessions with python如何使用 python 读取 telnet 会话
【发布时间】:2014-11-09 21:54:08
【问题描述】:

Aloha,我正在创建一个teamspeakbot,并希望对使用 TeamSpeak3 服务器创建的 telnet 会话进行读写操作

import telnetlib
tn = telnetlib.Telnet('localhost', 10011, 10)
tn.read_all()

我的期待:

Connected to localhost
Escape character is '^]'.
TS3
Welcome to the TeamSpeak 3 ServerQuery interface, type "help" for a li...

但是我在 10 秒后超时:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/telnetlib.py", line 325, in read_all
    self.fill_rawq()
  File "/usr/lib/python2.7/telnetlib.py", line 516, in fill_rawq
    buf = self.sock.recv(50)
socket.timeout: timed out

我如何阅读 telnet 连接告诉我的所有内容,然后再向其写入一些内容(例如登录过程和提交命令并获得响应...)

解决办法是

tn.read_very_eager()

我的代码现在看起来像这样:

import telnetlib, time
tn = telnetlib.Telnet('localhost', 10011, 10)
tn.write('help\n')
time.sleep(0.05)
print(tn.read_very_eager())

【问题讨论】:

    标签: python telnetlib


    【解决方案1】:

    read_all() 阻塞,直到到达 EOF*,或者直到您的超时。虽然我没有经常使用 telnetlib,但我认为它是用于显示某些内容然后关闭连接的服务。

    你是如何处理这样的代码的:

    tn = telnetlib.Telnet('localhost', 10011, 10)
    tn.read_some()
    

    *https://docs.python.org/2/library/telnetlib.html#telnetlib.Telnet.read_all

    【讨论】:

      猜你喜欢
      • 2020-03-25
      • 2013-08-24
      • 2019-11-06
      • 2014-05-05
      • 1970-01-01
      • 2023-04-01
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多