Python telnetlib read函数返回比预期更多的数据

2024-07-03 06:46:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为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()

Tags: readdata屏幕maindefloginsleeptelnet
1条回答
网友
1楼 · 发布于 2024-07-03 06:46:29

在发送答案之前,请阅读登录和密码提示。否则,它们将保留在流中,并将由下一个read调用读取。在

tn.read_some()
tn.write(username + "\t")
tn.read_some()
tn.write(password + "\r\n")
data = tn.read_some()

read_some()代替read_very_eager(),这样你就不需要先睡觉了。它将等待某个可用的东西,然后返回那里的所有东西。在

相关问题 更多 >