0
import getpass
import sys
import telnetlib

tn = telnetlib.Telnet("xxxxxxxx")
tn.write("xxxxxx" + "\n")
tn.write("xxxxxx" + "\n")

tn.write("show version\n")
tn.write("exit\n")

print tn.read_all()

ルーターに telnet で接続しようとすると、スクリプトがハングします...どうしたのかわかりません。デバッグを試みましたが、出力の頭またはつま先を作ることができません。

telnetlib.py(511):         if self.irawq >= len(self.rawq):
telnetlib.py(512):             self.rawq = ''
telnetlib.py(513):             self.irawq = 0
telnetlib.py(516):         buf = self.sock.recv(50)

これは、デバッグでハングする場所です。

ありがとうウィリアム

4

1 に答える 1

1

私はこれに答えることができます。それを修正することができました。

ルーターがコマンドに関する詳細情報を表示するためにユーザー入力を求めたとき、python スクリプトは脱線していました。

そのため、「バージョンの表示」を要求すると、コマンド ラインに多くの情報が表示され、さらに表示するにはスペースを押すように求められます。

これを解決するために、最初に実行するコマンドは「term len 0」です。ユーザー入力の要求を停止し、一度にすべて起動します。

以下は最終的なスクリプトです。かなり変更されましたが、その作品。

import sys
import telnetlib

tn = telnetlib.Telnet("xxxxxxxx")

TELNET_PROMPT="xxxxxxxxxx"
TIMEOUT=1
tn.write("xxxxxxx"+"\n")
tn.write("xxxxxxx"+"\n")
print tn.read_until(TELNET_PROMPT, TIMEOUT)
tn.write("term len 0" + "\n")
print tn.read_until(TELNET_PROMPT, TIMEOUT)
tn.write("show version" + "\n")
print tn.read_until(TELNET_PROMPT, TIMEOUT)
tn.write("exit"+"\n")
tn.close()
于 2013-02-13T14:49:28.857 に答える