当我使用telnetlib
模块连接到telnet会话时,我需要等待四个字符串:' a',' b',' c& #39;并且' d'或者在我将字符串写入套接字之前超时(10秒)。
有没有办法使用tn.read_until('a','b','c','d', timeout)
我只是想等待所有4个字符串在行动之前先来。
此外,这四个字符串每次都以不同的顺序排列。谢谢你的帮助。
答案 0 :(得分:1)
您可以使用the .expect
method等待a
,b
,c
或 d
Telnet。期待(列表 [,超时])
读取直到正则表达式列表中的一个匹配。
所以:
(index, match, content_including_abcd) = tn.expect(['a', 'b', 'c', 'd'], timeout)
达到超时后返回(-1, None, current_buffer)
。
我们可以轻松地将其更改为循环以等待a
,b
,c
和 d
:
deadline = time.time() + timeout
remaining_strings = ['a', 'b', 'c', 'd']
total_content = ''
while remaining_strings:
actual_timeout = deadline - time.time()
if actual_timeout < 0:
break
(index, match, content) = tn.expect(remaining_strings, actual_timeout)
total_content += content
if index < 0:
break
del remaining_strings[index]