telnetlib - 交互式控制台vs脚本

时间:2015-09-27 12:48:11

标签: python interactive telnetlib

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

import telnetlib

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

这种行为的原因是什么?

2 个答案:

答案 0 :(得分:2)

我刚看了read_very_eager方法的文档,其中说:

  

读取已排队或已插入的所有可用数据,   没有阻止。

当你调用这个方法时,很可能没有数据“已经可用或在套接字上排队”,所以你什么也得不回来。您可能希望使用read_until方法之类的方法,该方法将读取数据,直到找到特定的字符串。例如:

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

答案 1 :(得分:0)

根据tlnetlib文档,Telnet.read_very_eager()如果连接已关闭且没有可用的熟化数据,则引发EOFError。如果没有熟食数据则返回''。除非在IAC序列中,否则不要阻止。 如果你做data ==“”,则返回true,因此,这意味着没有熟食数据