Скрипт Python для устройств Cisco - PullRequest
0 голосов
/ 22 мая 2018

Я хочу извлечь работающую конфигурацию с устройств Cisco, но не получая ожидаемый вывод из кода

импортировать необходимые модули

import time, sys, getpass, paramiko

настроить переменные, используемые в сценарии

ip = '10.155.111.5'
username = ""
password = ""

установление сеанса SSH с использованием локальной аутентификации на коммутаторе cisco

remote_conn_pre = paramiko.SSHClient()
remote_conn_pre.set_missing_host_key_policy(paramiko.AutoAddPolicy())
remote_conn_pre.connect(ip, username=username, password=password,         
look_for_keys= False, allow_agent=False)
print "Interactive SSH session established to %s" %ip
remote_conn = remote_conn_pre.invoke_shell()
output = remote_conn.recv(1000)
print output

проверка текущих настроек SNMP

remote_conn.send("show run | in snmp")

отображение обновленной конфигурации порта

output = remote_conn.recv(3000)
print "-------------------AFTER-----------------------"
print '\n'.join(output)

закрыть сеанс SSH

sys.exit("ALL Done!")

Получение следующего вывода

====================== ПЕРЕЗАГРУЗИТЬ: D: \ user \ SNMP.py ====================== Интерактивный SSH-сеанс, установленный в 10.155.111.5

switch003 # ------------------- ПОСЛЕ ----------------------- s

>

1 Ответ

0 голосов
/ 09 июня 2018

Я использую python 3.6 для Windows, ниже работает для меня и должно работать в 2.6 также.Ваш маршрутизатор, вероятно, также требует пароль для режима включения, отсюда и ошибка.Попробуйте ниже и позвольте мне, если это работает.Я также использую таймер отключения, так как иногда соединение с пультом немного медленное.

import time, sys, getpass, paramiko

ip = input('Please enter the IpAddress of the host:')
username = input("Please enter username:")
password = getpass.getpass('Please enter a password:')

output = ""
# Create a new instance of an sshclient
client = paramiko.SSHClient()
# Set the missing host key policy to auto add the certificate
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=ip, username=username, password=password)
remote_conn = client.invoke_shell()
print("Interactive session established with {0}\n".format(ip))
remote_conn.send('\n')
remote_conn.send('enable\n')
time.sleep(1)
en_password = password + '\n'
#Ensure you send the enable password
remote_conn.send(en_password)
time.sleep(1)
print("{0}:Getting to enable mode was a success....".format(ip))
remote_conn.send("term len 0\n")
time.sleep(1)
output = remote_conn.recv(50000)
#Flush the output
output = ""
#Send a command
remote_conn.send("sh run | i snmp\n")
#wait a couple of seconds
time.sleep(5)
output = remote_conn.recv(50000)
print(output)
...