Скрипт Python для устройств Cisco
Я хочу извлечь работающий конфиг с устройств 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 ответ
Я использую 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)