質問

Python3でいくつかのTelnetアクションを自動化しようとしています。そこで、私はTelnetlibでビルドを使用し始めました(PEXPPECTではありません)。

実際にはこれまでのところすべてが機能しますが、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. 。 3秒後にホスト名が見つからなかった場合を除き、それまでに持っているものは何でも吐き出します: weijwrgnerg hg.

だから私はあなたがそれをほとんど正しくやっていると思う。あなたはおそらくしたいです re.escape ホスト名、それ以外の場合は、それを正規表現として解釈します。または、Pythonを使用することもできます .endswith(). 。そして、あなたはすることができます output.decode() 文字列を取得するには(ではなく bytes.decode(output)).

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top