1

スクリプトを実行してすべての構成を表示し、それらをジュニパーおよび CISCO ルーターのファイルに書き込もうとしています。これまでのところ、CISCO スクリプトは正常に機能していますが、問題はジュニパー ルーターにあります。

for ii in JUNIPER:
    print ii
    cmd2 = 'show configuration | display set'
    conn.connect(ii)
    conn.login(account1)
    conn.execute(cmd2)
    print conn.response
    #filerouter = open(ii, "w")
    #filerouter.write(conn.response)
    #filerouter.close()

クエリするデバイスのリストを取得した後、これを実行しますが、バッファの制限があるかのようにスタックします... -

別のコマンドを実行しようとすると:
("show configuration | display set | match destination ")
-- 出力がファイルまたは画面に書き込まれます。

C:\Python27>python.exe C:\User\suserrr\Downloads\shrun.py
'clear' is not recognized as an internal or external command,
operable program or batch file.
Generating configs for ROUTER:  R1.test.site
Generating connect for ROUTER:  R2.test.site
==============
===========
routername
Traceback (most recent call last):
  File "C:\Users\userrr\Downloads\shrun.py", line 40, in <module>
    conn.execute(cmd2)
  File "C:\Python27\lib\site-packages\exscript-2.1.440-py2.7.egg\Exscript\protocols\Protocol.py", line 900, in execute
    return self.expect_prompt()
  File "C:\Python27\lib\site-packages\exscript-2.1.440-py2.7.egg\Exscript\protocols\Protocol.py", line 999, in expect_prompt
    result = self.expect(self.get_prompt())
  File "C:\Python27\lib\site-packages\exscript-2.1.440-py2.7.egg\Exscript\protocols\Protocol.py", line 980, in expect
    result = self._expect(prompt)
  File "C:\Python27\lib\site-packages\exscript-2.1.440-py2.7.egg\Exscript\protocols\Protocol.py", line 956, in _expect
    result = self._domatch(to_regexs(prompt), True)
  File "C:\Python27\lib\site-packages\exscript-2.1.440-py2.7.egg\Exscript\protocols\SSH2.py", line 329, in _domatch
    if not self._fill_buffer():
  File "C:\Python27\lib\site-packages\exscript-2.1.440-py2.7.egg\Exscript\protocols\SSH2.py", line 303, in _fill_buffer
    raise TimeoutException(error)
Exscript.protocols.Exception.TimeoutException: Timeout while waiting for response from device

=========== ==== 質問 - スクリプトを実行してコマンドの出力を提供するにはどうすればよいですか: show configuration | display set2 番目の写真はエラーを示していますが、コマンドを次のように変更すると: show configuration | display set | match descriptionI要求された情報を取得します。exscript/python がタイムアウトを回避できるように、モジュールに何かを追加する必要がありますか?

4

3 に答える 3

3

デフォルトでは、JunOS は、コマンドによって返される長い出力を改ページします。接続している Juniper デバイスがshow configuration | display setコマンドの出力を改ページしている可能性があります。Exscript は、プロンプトを返すのではなく、コマンドの出力の改ページを続行するためのユーザー入力をデバイスが待機しているため、タイムアウトしています。 Exscriptが認識します。

次の変更を加えます。

for ii in JUNIPER:
    print ii
    cmd2 = 'show configuration | display set | no-more'
    conn.connect(ii)
    conn.login(account1)
    conn.execute(cmd2)
    print conn.response

これにより、その特定のコマンドの出力ページネーションが無効になり、すぐにプロンプ​​トに戻り、Exscript が出力を返すことができるようになります。念のため、コマンドにもキャリッジ リターンを追加します。

cmd2 = 'show configuration | display set | no-more\r'

しかし、上記のことを行うことの有用性については議論の余地がありexecute()ます.

于 2015-12-02T23:15:35.597 に答える