Автоматизируйте резервное копирование конфигурации (каждую минуту) в 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"
pyatka
источник
Я подозреваю, что только в NX-OS ...
Том О'Коннор,
1
@ Том, у меня нет нексуса (к сожалению ;-)), в IOS он поддерживается ... Я думаю, что EEM поддерживается всеми маршрутизаторами и больше всего коммутаторами: например, у меня есть только одна модель, которая не поддерживает EEM - 2950, ​​но в 2960, 3560, 3750 (E и не E), 4500, 4948, 6500 поддерживается.
пятка
2

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

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

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

shthead
источник
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.

Эвертон
источник