我正在为IBM as400盒使用telnet客户端,但是在获取正确数量的数据返回时遇到了一些麻烦。最初,该程序应连接到一个telnet会话,该会话具有要写入的用户名和密码字段,然后转到用户外壳程序,该外壳程序可让员工输入数据,访问数据库等。当我调用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()
最佳答案
发送答案之前,请先阅读登录名和密码提示。否则,它们将保留在流中,并在下一个读取调用中读取。
tn.read_some()
tn.write(username + "\t")
tn.read_some()
tn.write(password + "\r\n")
data = tn.read_some()
并使用
read_some()
代替read_very_eager()
,因此您不需要先睡觉。它将等待有可用的东西,然后返回那里的所有东西。关于python - Python telnetlib读取函数返回的数据超出预期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50531858/