Автоматизируйте резервное копирование конфигурации (каждую минуту) в Cisco IOS


16

Я хотел бы, чтобы мой маршрутизатор Cisco автоматически делал копию TFTP (и заполнял поля автоматически) каждую 1 минуту. Я также хотел бы, чтобы он работал в фоновом режиме. Кто-нибудь знает, возможно ли это / как это сделать? Я хотел бы сделать это ради просмотра рабочей конфигурации моих маршрутизаторов в notepad ++ (которая обновляет в реальном времени) вместо того, чтобы выполнять показ и запускать пробел 4 или 5 раз, прежде чем я доберусь до того, что мне нужно увидеть. Я думаю, что это было бы чрезвычайно полезно для сложных лабораторий. Кроме того, макросы не работают из-за команд TFTP-сервера, требующих ввода.


3
Разве в минуту действительно необходимо? Рассматривали ли вы также использование встроенной фильтрации в CLI с регулярным выражением для фильтрации частей рабочей конфигурации, которые вы хотите увидеть? То есть | includeили | exclude? Я изо всех сил пытаюсь увидеть полезность возможности просматривать ваши текущие конфигурации "в режиме реального времени".
Джон Дженсен

Мне нравится иметь один монитор с моей топологией и окнами CLI (с вкладками и надписью). Мой второй монитор со всеми запущенными конфигами моих устройств в режиме реального времени. Возможность видеть все мои рабочие настройки в режиме реального времени значительно упрощает поиск и устранение неисправностей, сравнение и копирование / вставку командных блоков. Особенно когда углубляешься в операторы карты маршрутов и списки ACL, огромным преимуществом является отсутствие необходимости вводить show run | s route-map несколько раз, чтобы увидеть и сравнить эту часть конфигурации с разными устройствами. Мне жаль, что вы изо всех сил пытаетесь найти это полезным, но я предполагаю, что каждый из них по-своему.
Майкл Май

@JohnJensen хороший момент, я не уловил роль каждую минуту. Кристиан, вы не задумывались над тем, чтобы иметь второй отдельный сеанс ssh, открытый для ваших устройств на втором мониторе, вместо того, чтобы открывать текущие настройки в текстовом документе? Контролируйте сеансы CLI A на предмет изменений и отслеживайте сеансы CLI B для просмотра настроек. Не говорить, что один путь лучше, чем другой, просто выдвигать идеи. :)
Бретт Лайкинс

Бретт, 'show running-config' не производит вывод в реальном времени. Мне приходилось печатать show run снова каждый раз, когда я вносил изменения, и мне приходилось нажимать пробел несколько раз, чтобы он показывал мне все настройки. Цель состоит в том, чтобы иметь полностью запущенные конфигурации, которые обновляются почти сразу, как только вы вносите в них изменения без вмешательства пользователя.
Майкл Май

@ ChristiandelaPeña Я следую за тобой, я просто говорю, что разные люди работают по-разному. Я полагаю, что лично я не вижу необходимости обновлять конфиги в прямом эфире так, как вы описываете. Это не делает это неправильно, просто не так, как я работаю. :) Я хочу дать вам инструменты, чтобы делать то, что вы хотите, так, как вы хотите. Пока вы работаете и учитесь, это все, что имеет для меня значение.
Бретт Лайкинс

Ответы:


19

У вас есть несколько вариантов, чтобы получить этот тип функциональности на устройстве Cisco. (Какой из них вы используете, зависит от ваших потребностей, а иногда и от нагрузки на устройство и IOS. Некоторые старые устройства / загрузки IOS будут иметь разные возможности.)

РЕДАКТИРОВАТЬ: Вы спрашиваете о том, чтобы делать это каждую минуту, что, как вы узнали в нашем чате об этом вопросе, будет тормозить ваш маршрутизатор. (Особенно в GNS3.) Для автоматизации подтверждающего резервного копирования доступны следующие параметры, однако я бы не рекомендовал делать это каждые 1 минуту.

Вы можете либо:

  1. Используйте функциональность Cisco Kron для планирования команд. Это позволит вам выполнять предопределенные команды по расписанию. Как вы указали, copy run tftpтребуется подтверждение файла. (Если вы не отключили подтверждение запроса файла , однако я не рекомендую его в качестве обычной настройки.) Перенаправление не требует подтверждения. Таким образом, команда, используемая в планировщикеshow run | redirect tftp://$SERVERIP/$PATH/$FILE

  2. Используйте функции архивации Cisco для управления конфигурацией. Архив - это способ хранить несколько копий конфигурации последовательно и откатывать конфигурации, если необходимо, к предыдущей версии. Копирование с помощью Kron перезаписывает предыдущий конфиг, а архив позволяет хранить до 14 различных версий конфига в указанном месте. Посмотрите эту ссылку в обучающей сети Cisco для получения дополнительной полезной информации об архиве. В частности, как динамически установить имя файла с помощью тегов $ h и $ t.

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


Пример конфигурации, чтобы Kron записывал конфигурацию и копировал ее на tftp сервер один раз в неделю:

kron occurrence SaveConfig at 23:50 Mon recurring
policy-list SaveConfig
!
kron occurrence BackupRunningConfig at 23:55 Mon recurring
policy-list BackupRunningConfig
!
kron policy-list SaveConfig
cli write
!
kron policy-list BackupRunningConfig
cli show running-config | redirect tftp://10.10.10.10/configs/testswitch.txt

Пример конфигурации, чтобы архивировать резервную копию вашей конфигурации на сервер tftp ежедневно:

archive
 path tftp://10.10.10.10/configs/$h-$t
 time-period 1440
 maximum 14

12

Есть на самом деле другой способ.

Вы можете запустить копию TFTP, используя SNMP. Это не очень прямолинейно, но невероятно полезно.

Во-первых, вам понадобится TFTP-сервер (что неудивительно). Вам также нужно что-то, что может отправлять запросы SNMP. Я сделал это эффективно с помощью инструментов snmp Linux.

Вы захотите создать новое сообщество для SNMP с ограниченным доступом для записи и, возможно, заблокировать его еще больше с помощью ACL IP. На самом деле вам нужно только иметь возможность писать в ccCopyTableOID.

На стороне Linux вам понадобятся следующие MIB (для удобства чтения, а не для функциональности)

CISCO-CONFIG-COPY-MIB
CISCO-SMI
CISCO-ST-TC

Установив MIB в соответствующем месте для вашей конфигурации SNMP в Linux, вы сможете проверить соединение с помощью snmptable следующим образом:

snmptable -v2c -c writeCommunity 192.168.1.1 ccCopyTable
CISCO-CONFIG-COPY-MIB::ccCopyTable: No entries

Обычно вам нужно предварительно создать файл на TFTP-сервере, чтобы маршрутизатор скопировал в него.

Чтобы запустить копию TFTP, вам нужно вставить строку в ccCopyTable.

snmpset позволяет вам сделать это.

# snmpset -v2c -c writeCommunity 192.168.1.1 \
> ccCopyProtocol.23 i tftp \
> ccCopySourceFileType.23 i runningConfig \
> ccCopyDestFileType.23 i networkFile \
> ccCopyServerAddress.23 a 192.168.1.100 \
> ccCopyFileName.23 s router.conf

CISCO-CONFIG-COPY-MIB::ccCopyProtocol.23 = INTEGER: tftp(1)
CISCO-CONFIG-COPY-MIB::ccCopySourceFileType.23 = INTEGER: runningConfig(4)
CISCO-CONFIG-COPY-MIB::ccCopyDestFileType.23 = INTEGER: networkFile(1)
CISCO-CONFIG-COPY-MIB::ccCopyServerAddress.23 = IpAddress: 192.168.1.100
CISCO-CONFIG-COPY-MIB::ccCopyFileName.23 = STRING: router.conf

Как только вы это сделаете, вы сможете снова запустить первую команду и увидеть команду copy в ccCopyTable.

snmptable -v 2c -c writeCommunity 192.168.1.1 ccCopyTable

SNMP table: CISCO-CONFIG-COPY-MIB::ccCopyTable

 index Protocol SourceFileType DestFileType ServerAddress    FileName UserName
    23     tftp  runningConfig  networkFile     192.168.1.100 router.conf        ?

SNMP table CISCO-CONFIG-COPY-MIB::ccCopyTable, part 2

 index UserPassword NotificationOnCompletion State TimeStarted TimeCompleted
    23            ?                    false     ?           ?             ?

SNMP table CISCO-CONFIG-COPY-MIB::ccCopyTable, part 3

 index FailCause EntryRowStatus ServerAddressType ServerAddressRev1
    23         ?              ?              ipv4       "192.168.1.100"

Ничего не произойдет, пока вы не установите другой столбец в ccCopyTable для активации строки.

 snmpset  -v2c -c writeCommunity 192.168.1.1 \
> ccCopyEntryRowStatus.23 i active

Если вы снова проверите ccCopyTable, вы увидите, что State и TimeStarted были обновлены, чтобы отразить, что файл был скопирован.

Ниже приведена более подробная информация о ссылках на источники, в том числе о том, как очистить ccCopyTable (если хотите).

Я использовал тот же метод в сценарии с сервера Linux, чтобы вызвать копию TFTP, затем зафиксировать файл в git и отправить его обратно в хранилище, и все это одним быстрым процессом.

Источники: http://www.ciscozine.com/2013/08/22/how-to-save-configurations-using-snmp/

и http://bodgitandscarper.co.uk/networks/using-snmp-to-trigger-cisco-tftp-backups/


2
Вот так я делал это годами, используя Pancho, пока недавно не переключился на RANCID, чтобы получить больше поддержки устройств. RANCID настоятельно рекомендуется, просто потому, что вы также получаете контроль версий - используйте 'svn blame', чтобы узнать, когда этот интерфейс изменился с полнодуплексного на автоматический, или докажите, что ничего не изменилось за x месяцев.
AnotherHowie

Может ли RANCID регистрироваться в Git, а не в SVN?
Том О'Коннор

Я так не думаю. CVS по умолчанию. SVN это вариант. Поскольку это ситуация с контролем версий только для одной записи и одного пользователя (RANCID), нет особого преимущества в использовании чего-то другого. RANCID 3 сейчас в разработке, так что, возможно, они обновили эту часть. Это довольно старомодная часть программного обеспечения - Perl, Expect и Shell.
AnotherHowie

Только что проверил и RANCID 3 не говоря уже о новых опций ВК, здесь: gossamer-threads.com/lists/rancid/users/6555#6555
AnotherHowie

2

Вы можете использовать EEM

Пример:

event manager applet dumpconfig
 event timer {absolute time time-value | countdown time time-value | cron cron-entry cron-entry | watchdog time time-value} [name timer-name]
 action 1.0 cli command "enable"
 action 2.0 cli show running-config | redirect tftp://10.10.10.10/configs/testswitch.txt
 action 998.0 cli command "end"
 action 999.0 cli command "exit"

Я подозреваю, что только в NX-OS ...
Том О'Коннор,

1
@ Том, у меня нет нексуса (к сожалению ;-)), в IOS он поддерживается ... Я думаю, что EEM поддерживается всеми маршрутизаторами и больше всего коммутаторами: например, у меня есть только одна модель, которая не поддерживает EEM - 2950, ​​но в 2960, 3560, 3750 (E и не E), 4500, 4948, 6500 поддерживается.
пятка

2

Вы можете использовать RANCID для этого.

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

Это работает с каждым коммутатором и маршрутизатором, который я бросил на нем до сих пор (Cisco / Juniper / Dell), что является еще одним плюсом.


1

Вы можете использовать Perl-скрипт, такой как этот . Использование:perl cisco_backup.pl "my-enable-password"


1
Сообщения, содержащие только ссылки, ограничены в своей полезности. Можете ли вы добавить соответствующие части этого решения к вашему ответу?
Райан Фоли

Никогда не вводите пароль в командную строку, если это возможно. Вместо этого используйте среду.
Cougar

0

fetchconfig - еще один инструмент для этого:

fetchconfig - это Perl-скрипт для получения конфигурации нескольких устройств. Он был протестирован под Linux и Windows и в настоящее время поддерживает различные устройства, включая Cisco IOS, Cisco Catalyst, Cisco ASA, Cisco PIX, брандмауэры FortiGate, ProCurve, Ethernet-маршрутизаторы Alcatel (он же Riverstone), коммутаторы Dell PowerConnect, Terayon 3200 /. 3500 CMTS, коммутаторы Datacom DmSwitch, маршрутизаторы HP MSR, маршрутизаторы Mikrotik, Tellabs MSR, коммутатор Juniper EX JunOS, пакет Oracle Acme, аудиокоды Mediant, Cisco IOS XR, NEC Univerge IX.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.