私はこの投稿を広範囲にわたって読み、Exscript、paramiko、Fabric、pxsshを調査しましたが、それでも失われています Ciscoルーターへの永続的なsshセッション 。私はpythonスクリプト作成に不慣れです。
Pythonでスクリプトを記述して、CiscoデバイスにSSHで接続し、「show version」を実行し、結果をメモ帳に表示して、スクリプトを終了します。
ユーザーがデバイスと対話する必要のないshowコマンドでこれを機能させることができます。例えば:
from Exscript.util.interact import read_login
from Exscript.protocols import SSH2
account = read_login()
conn = SSH2()
conn.connect('192.168.1.11')
conn.login(account)
conn.execute('show ip route')
print conn.response
conn.send('exit\r')
conn.close()
上記のスクリプトは、「show ip route」の結果を表示します。
Conn.execute( 'show version')を実行しようとすると、Ciscoデバイスがスペースバーを押して続行することを期待しているため、スクリプトがタイムアウトし、returnキーを押して次の行を表示するか、任意のキーを押してコマンドラインに戻ります。
Show versionコマンドを実行し、スペースバーを2回押してshow versionコマンドの出力全体を表示し、それをpythonで印刷するにはどうすればよいですか?
ありがとうございました!!!!
terminal length 0
を実行する前に、show version
を実行してみてください。例えば:
from Exscript.util.interact import read_login
from Exscript.protocols import SSH2
account = read_login()
conn = SSH2()
conn.connect('192.168.1.11')
conn.login(account)
conn.execute('terminal length 0')
conn.execute('show version')
print conn.response
conn.send('exit\r')
conn.close()
シスコターミナルのドキュメントから: http://www.Cisco.com/en/US/docs/ios/12_1/configfun/command/reference/frd1003.html#wp1019281
最初に実行
terminal length 0
ページングを無効にします。
同じことを尋ねたところ、以下のコードがリストから実行され、必要な情報が取得されます。
from __future__ import print_function
from netmiko import ConnectHandler
import sys
import time
import select
import paramiko
import re
fd = open(r'C:\NewdayTest.txt','w') # Where you want the file to save to.
old_stdout = sys.stdout
sys.stdout = fd
platform = 'Cisco_ios'
username = 'username' # edit to reflect
password = 'password' # edit to reflect
ip_add_file = open(r'C:\IPAddressList.txt','r') # a simple list of IP addresses you want to connect to each one on a new line
for Host in ip_add_file:
Host = Host.strip()
device = ConnectHandler(device_type=platform, ip=Host, username=username, password=password)
output = device.send_command('terminal length 0')
output = device.send_command('enable') #Editable to be what ever is needed
print('##############################################################\n')
print('...................Cisco COMMAND SHOW RUN OUTPUT......................\n')
output = device.send_command('sh run')
print(output)
print('##############################################################\n')
print('...................Cisco COMMAND SHOW IP INT BR OUTPUT......................\n')
output = device.send_command('sh ip int br')
print(output)
print('##############################################################\n')
fd.close()