Автоматизація резервного копіювання конфігурації (щохвилини) в Cisco IOS


16

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


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

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

@JohnJensen Добре, я не сприймав цю частину щохвилини. Крістіан, ти вважав, що на другому моніторі відкрито для своїх пристроїв другий окремий сеанс ssh, а не відкриті запущені конфігурації в текстовому документі? Моніторинг CLI-сеансів для змін та CLI-сеанси Monitor B для перегляду конфігурацій. Не говорити, що один спосіб кращий за інший, просто викидаючи ідеї там. :)
Brett Lykins

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

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

Відповіді:


19

У вас є кілька варіантів, щоб отримати такий тип функціональності на пристрої Cisco. (Який з них ви використовуєте, залежить від ваших потреб, а іноді і від завантаження пристрою та IOS. Деякі старі пристрої / завантаження IOS матимуть різні можливості.)

EDIT: Ви просите робити це щохвилини, що, як ви дізналися в нашому чаті з цього питання, завалить ваш маршрутизатор. (Особливо в GNS3.) Нижче наведені варіанти доступні для автоматизації резервного копіювання підтвердження, проте я б не рекомендував робити це кожні 1 хвилину.

Ви можете:

  1. Використовуйте функцію Kron від Kron для планування команд. Це дозволить виконувати заздалегідь задані команди на плановій основі. Як ви вказали, copy run tftpпотрібне швидке підтвердження файлу. (Якщо ви не вимкнули швидке підтвердження файлу , однак я не рекомендую це як звичайне налаштування.) Перенаправлення не потребує підтвердження. Отже команда, яка використовується в планувальнику, єshow run | redirect tftp://$SERVERIP/$PATH/$FILE

  2. Використовуйте функцію архіву Cisco для управління конфігурацією. Архів - це спосіб збереження декількох копій конфігурації послідовно, а також повернення конфігурацій, якщо потрібно, до попередньої версії. Копіювання за допомогою Kron перезаписує попередню конфігурацію, в той час як Archive дозволяє зберігати до 14 різних конфігураційних версій у вказаному місці. Дивіться це посилання в мережі Cisco Learning для отримання більш корисної інформації про Archive. Зокрема, як динамічно встановити ім'я файлу за допомогою тегів $ 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, який має обмежений доступ для запису, і, ймовірно, ще більше заблокує його за допомогою IP 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

Після того, як ви зробите це, ви зможете повторно запустити першу команду і побачити команду копіювання в 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, вам слід побачити, що стан та 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 зараз працює, тому можливо, вони оновили цю частину. Це порівняно старомодний фрагмент програмного забезпечення - перл, очікування та оболонка.
AnotherHowie

Щойно перевірено, і RANCID 3 не згадує нові варіанти VC, тут: 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
@Tom, у мене немає Nexus (на жаль ;-)), в IOS він підтримується ... Я думаю, що EEM підтримується всіма маршрутизаторами і більшість всіх комутаторів: наприклад, у мене є лише одна модель, яка не підтримує EEM - 2950, ​​але в 2960-х, 3560, 3750 (Е, а не Е), 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, маршрутизатори Alcatel Ethernet (aka Riverstone), комутатори Dell PowerConnect, Terayon 3200 / 3500 CMTS, комутатори Datacom DmSwitch, маршрутизатори HP MSR, маршрутизатори Mikrotik, MSR-маршрутизатори Tellabs, комутатор Juniper EX JunOS, пакет Oracle Acme, аудіокоди-посередник, Cisco IOS XR, NEC Univerge IX.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.