Как бэкапить конфигурацию цисок Печать
Добавил(а) microsin   

Есть много способов бэкапа, начиная от систем, построенных на базе Linux, кончая CiscoWorks.

Вот несколько вариантов попроще:

1. Очень неплоха Kiwi CatTools [1], правда, она небесплатная.
2. Могу предложить также простую, написанную мной утилиту [2], запускаемую из командной строки. Она скачивает конфиги (startup-config или running-config) по протоколу telnet. Пример использования см. во врезке ниже.
3. Применение протокола и утилиты rsh (см. [3]).
4. Закачка конфигов с помощью протокола и утилиты SSH. Функционально аналогичен предыдущему методу, но имеет преимущества по защищенности и не работает на некоторых устройствах Cisco (например, протокол SSH не поддерживается серией Catalyst 2900). Опишу метод более подробно.

@set login=type_user_login_level15_here
@set p1=type_user_password_here
@set pES1=type_enable_secret_password_here
@set rar=c:\ARC\RAR\RAR.EXE
set dest_path=\\10.50.0.246\c$\cisco_backup
 
@if exist ciconfig.log echo -------------------------------------------------------------------
------------- >>ciconfig.log
@for /F "tokens=1,*" %%l in (ip\bad-canal.txt)     do ciconfig.exe -ip:%%l -od:bad-canal
 -d0 -UN:%login% -UP:%p1% -ES:%pES1% -TP:%pES1% -cf0 -wt:20 -desc:"%%m"
@for /F "tokens=1,*" %%l in (ip\comstar.txt)       do ciconfig.exe -ip:%%l -od:comstar
 -d0 -UN:%login% -UP:%p1% -ES:%pES1% -TP:%pES1% -cf0 -wt:2 -desc:"%%m"
@for /F "tokens=1,*" %%l in (ip\golden.txt)        do ciconfig.exe -ip:%%l -od:golden
 -d0 -UN:%login% -UP:%p1% -ES:%pES1% -TP:%pES1% -cf0 -wt:4 -desc:"%%m"
@for /F "tokens=1,*" %%l in (ip\life.txt)          do ciconfig.exe -ip:%%l -od:life
 -d0 -UN:lifeadmin -UP:life#admin -ES:life@admin -TP:life@admin -cf0 -wt:4 -desc:"%%m"
@for /F "tokens=1,*" %%l in (ip\piter-private.txt) do ciconfig.exe -ip:%%l -od:piter
 -d0 -UN:%login% -UP:%p1% -ES:%pES1% -TP:%pES1% -cf0 -wt:2 -desc:"%%m"
@for /F "tokens=1,*" %%l in (ip\piter-public.txt)  do ciconfig.exe -ip:%%l -od:piter
 -d0 -UN:spb -UP:spb_1346 -ES:%pES1% -TP:%pES1% -cf0 -wt:2 -desc:"%%m"
@for /F "tokens=1,*" %%l in (ip\pollars.txt)       do ciconfig.exe -ip:%%l -od:pollars
 -d0 -UN:%login% -UP:%p1% -ES:%pES1% -TP:%pES1% -cf0 -wt:2 -desc:"%%m"
@for /F "tokens=1,*" %%l in (ip\raznoe.txt)        do ciconfig.exe -ip:%%l -od:raznoe
 -d0 -UN:%login% -UP:%p1% -ES:%pES1% -TP:%pES1% -cf0 -wt:10 -desc:"%%m"
@for /F "tokens=1,*" %%l in (ip\rtkom.txt)         do ciconfig.exe -ip:%%l -od:rtkom
 -d0 -UN:%login% -UP:%p1% -ES:%pES1% -TP:%pES1% -cf0 -wt:2 -desc:"%%m"
@for /F "tokens=1,*" %%l in (ip\servA.txt)         do ciconfig.exe -ip:%%l -od:servA
 -d0 -UN:%login% -UP:%p1% -ES:%pES1% -TP:%pES1% -cf0 -wt:2 -desc:"%%m"
@for /F "tokens=1,*" %%l in (ip\servB.txt)         do ciconfig.exe -ip:%%l -od:servB
 -d0 -UN:%login% -UP:%p1% -ES:%pES1% -TP:%pES1% -cf0 -wt:2 -desc:"%%m"
@for /F "tokens=1,*" %%l in (ip\transtelekom.txt)  do ciconfig.exe -ip:%%l -od:transtelekom
 -d0 -UN:%login% -UP:%p1% -ES:%pES1% -TP:%pES1% -cf0 -wt:2 -desc:"%%m"
 
%rar% m ..\cfg_backup\ciscocfg.rar bad-canal\*.txt
%rar% m ..\cfg_backup\ciscocfg.rar comstar\*.txt
%rar% m ..\cfg_backup\ciscocfg.rar golden\*.txt
%rar% m ..\cfg_backup\ciscocfg.rar life\*.txt
%rar% m ..\cfg_backup\ciscocfg.rar piter\*.txt
%rar% m ..\cfg_backup\ciscocfg.rar pollars\*.txt
%rar% m ..\cfg_backup\ciscocfg.rar raznoe\*.txt
%rar% m ..\cfg_backup\ciscocfg.rar rtkom\*.txt
%rar% m ..\cfg_backup\ciscocfg.rar servA\*.txt
%rar% m ..\cfg_backup\ciscocfg.rar servB\*.txt
%rar% m ..\cfg_backup\ciscocfg.rar transtelekom\*.txt
%rar% a ..\cfg_backup\ciscocfg.rar ip\*.txt
autoname ..\cfg_backup\ciscocfg.rar

В качестве ssh-клиента понадобится бесплатная утилита plink.exe, входящая в набор программ putty (напомню, что это open-source telnet/ssh клиент). Plink.exe специально предназначена для запуска из командных файлов. С помощью неё можно получить доступ к интерактивной ssh-консоли устройства Cisco, а можно выполнить последовательность команд. Вот, например, как автоматически получить running-config по протоколу SSH (эту команду можно запустить по шедулеру, или включить в командный файл):

plink -ssh -l локальный_пользователь_15 -pw пароль_локального_пользователя_15 a.b.224.254 -m commands.txt -batch >running-config.txt

Пояснения:

- опция "-ssh" указывает коннектиться по -ssh.
- опция "-l локальный_пользователь_15" указывает логин. Обычно это локальный пользователь устройства Cisco с уровнем привилегий 15 (хотя это необязательно, в зависимости от системы авторизации и входа в привилегированный режим в командном файле для Cisco  - см. далее опцию "-m commands.txt" - можно указать команды для входа в привилегированный режим).
- опция "-pw пароль_локального_пользователя_15" указывает пароль локального пользователя устройства Cisco.
- "a.b.224.254" указывает IP или сетевое имя устройства Cisco, к которому осуществляется подключение.
- опция "-m commands.txt" задает список команд для устройства Cisco, включая пробелы (для прохода промта "--More--") и возвраты каретки (для ввода команд).
- опция "-batch" отключает любую интерактивность программы (за исключением самого устройства Cisco).
- ">running-config.txt" перенаправляет вывод в текстовый файл - это и будет закачанный running-config.
- для использования в командных файлах с протоколом ssh лучше перекомпилировать plink, убрав отключение сеанса в случае отсутствия отпечатка ключа в реестре, если используется опция -batch, либо сконфигурировать устройство Cisco таким образом, чтобы автоматическая смена ключей не производилась.

Содержимое файла команд для Cisco commands.txt:

enable
пароль_режима_enable
show running-config
          
quit

Тут вроде все понятно, однако есть несколько замечаний:

- 4-я строка якобы пустая - на самом деле там 12 пробелов, гарантированно проматывающих промты "--More--". Количество пробелов можно посчитать и подобрать опытным путем по вкусу - в зависимости от длины конфига Cisco.
- команда quit не только разрывает SSH-сеанс, но и завершает программу plink.
- первый коннект к хосту нужно делать вручную, иначе вышеуказанная команда не выполнится из-за того, что хеш ключа не сохранен в памяти (реестре) - если мы используем немодифицированный plink:

plink -ssh -l локальный_пользователь_15 -pw пароль_локального_пользователя_15 a.b.224.254 -m commands.txt -batch >running-config.txt
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 768 86:82:05:3e:62:40:b1:a1:15:ee:74:b2:eb:5a:26:66
Connection abandoned.

Для запуска вручную нужно в консоли ввести команду и подтвердить валидность хоста, тогда хеш ключа запишется в реестр и дальше можно plink для коннекта с этим SSH-сервером запускать автоматически шедулером:

plink -ssh -l локальный_пользователь_15 -pw пароль_локального_пользователя_15 a.b.224.254
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 768 86:82:05:3e:62:40:b1:a1:15:ee:74:b2:eb:5a:26:66
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n) y
Using username "локальный_пользователь_15".
Type help or '?' for a list of available commands.
router> quit

Хакнутый plink, который никогда не задает глупых вопросов по поводу сохранения хешей, см. по ссылке [4].

[Ссылки]

1. Kiwi CatTools site:solarwinds.com.
2. ciconfig.exe - утилита для автоматизации управления оборудованием Cisco.
3. Что такое RSH.
4. plink.exe - модифицированный plink.