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