0

我正在尝试使用 python3 自动化一些远程登录操作。所以我开始使用 telnetlib 中的构建(不是 pexpect)。

实际上到目前为止一切正常,但我不完全理解 read_until 是如何工作的 - 实际上文档说你可以设置一个超时,如果没有找到搜索字符串,超时会发回一个空字节值,或者如果有另一个值那就是一个可以存储为返回值的!

那有意义吗 ?!

如果我想 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

但这对我来说没有任何意义,所以也许你现在是一个更好的解决方案

4

1 回答 1

1

是的,如果您的主机名是example.com, read_until 将返回类似weijwrgnerg hgqwv blather example.com. 除非它在三秒钟后没有找到主机名,否则它只会吐出到那时它得到的任何东西:weijwrgnerg hg.

所以我认为你做的几乎是对的。您可能想要re.escape您的主机名,否则它会将其解释为正则表达式。或者,您可以只使用 Python 的.endswith(). 你可以做output.decode()一个字符串(而不是bytes.decode(output))。

于 2010-12-14T14:48:18.037 回答