telnetlib - 交互式控制台与脚本

telnetlib - interactive console vs script

问题是,我的脚本无法运行(它正在打印空通道),但它可以在 python 交互式控制台中运行。

import telnetlib

tn = telnetlib.Telnet("killermud.pl", 4000)
data = tn.read_very_eager()
data = data.decode()
print(data)
tn.close()

这种行为的原因是什么?

我刚刚查看了 read_very_eager 方法的文档,上面写着:

Read all data available already queued or on the socket, without blocking.

很可能在您调用此方法时没有数据 "already available or queued on the socket",因此您什么也得不到。您可能想要使用类似于 read_until 方法的方法,该方法将读取数据直到找到特定的字符串。例如:

data = tn.read_until('Podaj swoje imie')

根据 tlnetlib 文档,Telnet.read_very_eager() 如果连接关闭且没有可用的熟数据,则引发 EOFError。 Return '' 如果没有可用的熟数据,否则。除非在 IAC 序列中,否则不要阻塞。 如果做data=="", returns true, 因此,表示没有cooked data可用