【发布时间】:2011-04-29 09:28:09
【问题描述】:
我正在使用 Python 模块 telnetlib 来创建一个 telnet 会话(使用国际象棋服务器),但我遇到了一个我真的无法解决的问题。以下代码完美运行:
>>> f = login("my_server") #code for login(host) below.
>>> f.read_very_eager()
这会吐出服务器通常在登录时打印的所有内容。但是,当我把它放在一个函数中然后这样调用它时:
>>> def foo():
... f = login("my_server")
... return f.read_very_eager()
...
>>> foo()
我什么也没得到(空字符串)。我可以检查登录是否正确执行,但由于某种原因我看不到文本。那么它在哪里被吞噬呢?
非常感谢。
为了完整起见,这里是登录名(主机):
def login(host, handle="guest", password=""):
try:
f = telnetlib.Telnet(host) #connect to host
except:
raise Error("Could not connect to host")
f.read_until("login: ")
try:
f.write(handle + "\n\r")
except:
raise Error("Could not write username to host")
if handle == "guest":
f.read_until(":\n\r")
else:
f.read_until("password: ")
try:
f.write(password + "\n\r")
except:
raise Error("Could not write password to host")
return f
【问题讨论】:
-
我发现如果我使用 read_very_eager() 而不是 read_until(),它确实有效。应该是关于协议和数据传输方式的东西,我没有必要的技术背景。