次のコードがあるとします。
import telnetlib
import sys
def func1(IP,user,passw):
t=telnetlib.Telnet(IP)
t.write(user.encode('ascii')+b'\n')
t.write(passw.encode('ascii')+b'\n')
return t
def func2(t,command):
t.write(command.encode('ascii')+b'\n')
print(command)
user=sys.argv[1]
passw=sys.argv[2]
IP=sys.argv[3]
t=func1(IP,user,passw)
for i in range(6):
func2(t, "message "+str(i))
サーバーを調べて Wireshark すると、メッセージ 1 と 2 だけが通過します。
さて、func2(t,command)
次のように関数を変更すると:
def func2(t,command):
t.write(command.encode('ascii')+b'\n')
t.read_eager() #This is the new line.
print(command)
すべて正常に動作し、すべてのメッセージが送信されました。
何か案が?
Python3.3 WindowsXP