Вы отправляли их как "команды конфигурации". В IOS копирование на TFTP-сервер должно выполняться в режиме Privileged EXE C. При выполнении из Global Config команда не будет работать, если ей не предшествует «do», как в do copy start tftp://...
.
Вы пытаетесь создать резервную копию конфигурации запуска на сервере TFTP? Интересный выбор назвать конфигурацию «test.bin» между прочим.
Вы можете сделать это двумя способами:
- Резервное копирование по TFTP на устройство, как вы делаете
- Резервное копирование в файл путем захвата выходных данных команды «show run»
Отличная вещь во втором варианте: даже если у вашего устройства возникают проблемы с подключением к TFTP-серверу, вы можете по-прежнему выполняйте резервное копирование конфигурации.
МЕТОД 1
Вам нужно будет не только отправить команду копирования, но вам нужно будет ответить на запросы, которые вы получить:
CISCO2921-K9#copy start tftp://10.122.151.118/cisco2921-k9-backup
Address or name of remote host [10.122.151.118]?
Destination filename [cisco2921-k9-backup]?
!!
1759 bytes copied in 0.064 secs (27484 bytes/sec)
CISCO2921-K9#
Итак, вы должны быть готовы ответить «Enter» на оба вопроса
Это пример того, как будет выглядеть рабочий скрипт:
from netmiko import ConnectHandler
# enter the IP for your TFTP server here
TFTP_SERVER = "10.1.1.1"
# to add a device, define its connection details below, then add its name
# to the list of "my_devices"
device1 = {
'device_type': 'cisco_ios',
'host': '10.1.1.1',
'username': 'admin',
'password': 'cisco123',
'secret': 'cisco123',
}
device2 = {
'device_type': 'cisco_xr',
'host': '10.1.1.2',
'username': 'admin',
'password': 'cisco123',
'secret': 'cisco123',
}
# make sure you add every device above to this list
my_devices = [device1, device2]
# This is where the action happens. Connect, backup, respond to prompts
# Feel free to change the date on the backup file name below,
# everything else should stay the same
i = 0
for device in my_devices:
i += 1
name = f"device{str(i)}"
net_connect = ConnectHandler(**device)
net_connect.enable()
copy_command = f"copy start tftp://{TFTP_SERVER}/{name}-backup-02-26-2020"
output = net_connect.send_command_timing(copy_command)
if "Address or name" in output:
output += net_connect.send_command_timing("\n")
if "Destination filename" in output:
output += net_connect.send_command_timing("\n")
net_connect.disconnect
print(output)
Надеюсь, это было полезно. Дайте мне знать, если у вас есть еще вопросы