Python Telnetlib read_until' a'和' b'和' c'并且' d'

时间:2017-03-11 06:01:26

标签: python telnetlib

当我使用telnetlib模块连接到telnet会话时,我需要等待四个字符串:' a',' b',' c& #39;并且' d'或者在我将字符串写入套接字之前超时(10秒)。

有没有办法使用tn.read_until('a','b','c','d', timeout)

我只是想等待所有4个字符串在行动之前先来。

此外,这四个字符串每次都以不同的顺序排列。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用the .expect method等待abc d

  

Telnet。期待列表 [,超时])

     
    

读取直到正则表达式列表中的一个匹配。

  

所以:

(index, match, content_including_abcd) = tn.expect(['a', 'b', 'c', 'd'], timeout)

达到超时后返回(-1, None, current_buffer)

我们可以轻松地将其更改为循环以等待abc 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]