我正在为IBMAS400设备开发telnet客户机,在获取正确的返回数据量时遇到了一些问题。最初,程序应该连接到telnet会话,这个会话有一个用户名和密码字段,然后进入用户shell,允许员工输入数据、访问数据库等。当我调用read_very_eager
时,它返回的缓冲区中充满了登录屏幕和登录后会话,而不仅仅是登录后会话。我不太清楚为什么会发生这种情况,而其他read_xyz
方法也不打印任何内容,或者只使用登录屏幕的前几个字节填充缓冲区。我的代码如下(敏感数据省略):
def login():
tn = telnetlib.Telnet(host, port)
sleep(1)
tn.write(username + "\t")
tn.write(password + "\r\n")
sleep(1)
data = tn.read_very_eager()
print data
def main():
print "started"
login()
main()
在发送答案之前,请阅读登录和密码提示。否则,它们将保留在流中,并将由下一个read调用读取。在
用
read_some()
代替read_very_eager()
,这样你就不需要先睡觉了。它将等待某个可用的东西,然后返回那里的所有东西。在相关问题 更多 >
编程相关推荐