我正在尝试使用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)).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top