telnetlib read_until()功能混乱
题
我正在尝试使用Python3自动化一些Telnet动作。因此,我开始使用telnetlib(不是pexpect)中的构建。
实际上,一切都在到目前为止工作,但我还不完全理解READ_UNTIL的工作原理 - 实际上,文档说您可以设置超时,并且如果找不到搜索字符串,则暂停会发送回空字节值,或者是否有另一个值一个可以存储为返回值的!
那有意义吗 ?!
如果我想读取一个值 - 我如何发现这个值实际上是函数读取的值。另外,我找不到如何检查超时。
我现在的解决方法是:
output = telnet.read_until(str.encode(hostname), 3)
if re.search(hostname, bytes.decode(output), re.IGNORECASE):
#do something when the output matches the searchstring
else:
#stop the function
但这对我来说没有任何意义,所以也许您现在是更好的解决方案
解决方案
是的,如果您的主机名是 example.com
, ,read_until将返回类似的东西 weijwrgnerg hgqwv blather example.com
. 。除非三秒钟后还没有找到主机名,否则它将吐出任何内容:到那时: weijwrgnerg hg
.
因此,我认为您正在做正确的事情。你可能想 re.escape
您的主机名,否则它将将其解释为正则。另外,您可以只使用Python的 .endswith()
. 。你可以做 output.decode()
要获得一个字符串(而不是 bytes.decode(output)
).
不隶属于 StackOverflow