Как отправить команды подтверждения на оборудование cisco через скрипт python?

Здравствуйте, задача написать скрипт для автоматизации бэкапов cisco оборудования. Проблема в том что, я не знаю как отправить подтверждающие команды.
Вот как выглядит скрипт на данный момент:

#Подключенные библиотеки
import getpass
import sys
from netmiko import ConnectHandler

#Адрес оборудование
devices = ['192.168.125.88']

#словарь, в котором указываются параметры устройства
 for ip in device:
	print('connetion to device {}'.format(ip))
	device = {
		'device_type': 'cisco_ios',
		'ip': '192.168.125.88',
		'username': 'cisco',
		'password': 'passwd',
		'secret': 'enpasswd'
		'port' : 22,
	}

with ConnectHandler(**device) as ssh: #подключение по ssh
    ssh.enable() #вход в привилегированный режим 

    result = ssh.send_command('show ip int br')
    print(result)
    ssh.send_command('copy running-config ftp')


Как вы знаете после команды "copy running-config ftp" cisco, просит подтверждающие команды. Прошу помощи, так как не могу сам решить этот вопрос.
Заранее спасибо!
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 4
@iddqda
может если до питона дорос то и нахрен уже всякие старомодные ftp?
result = ssh.send_command('show run')
with open(f"{device_name}.cfg") as f:
  f.write(result)

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

з.ы. конкретно эта твоя задача решается совсем просто: scp cisco:running-config .
Ответ написан
martin74ua
@martin74ua
Linux administrator
man expect

man cbackup
man rancid

вот интересно, зачем люди пишут свои велосипеды, если существует масса софта, который это делает?
Ответ написан
@Almanac Автор вопроса
Спасибо всем кто просмотрел, я добавил пару условий в свой скрипт:
net_connect = ConnectHandler(**device)
command = "copy startup-config ftp:"
print()
print(net_connect.find_prompt())
output = net_connect.send_command_timing(command)
if "Address or name of remote host []?" in output:
output += net_connect.send_command_timing(
"адрес сервера куда будет отправлен бэкап", strip_prompt=False, strip_command=False
)
if "Destination filename [zhgn-sw-confg]?" in output:
output += net_connect.send_command_timing(
"имя файла можно вписать то же что и hostname", strip_prompt=False, strip_command=False
)
Да я понимаю возможно для экспертов и "ЧСВ Экспертов" Мой выход будет казаться диким, но я пока только начал изучать python. Возможно в будущим сделаю или найду упрощенный вариант данной задачи. ASAP я выложу его сюда, а пока данной вариант может годиться как временное решение
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы