У Вас развелось много «железа» ?
Вы хотите, чтобы конфиги складывались на backup сервер автоматом ?
Это дело хорошее. Расскажу вам как это сделать один раз, в автоматическом режиме и забыть волнения по поводу «а если что упадет?».
Упадет — возьмете новую железку, зальете сохраненный конфиг и вперед !
Допустим что:
192.168.1.1 — IP-адрес cisco catalyst 2950 или cisco catalyst 2960
192.168.1.2 — IP-адрес cisco catalyst 3560G или любая другая циска 🙂
192.168.1.254 — IP-адрес backup сервера
Приступим:
Первый способ.
Для начала на наш FreeBSD backup сервер нужно установить порт:
cd /usr/ports/net-mgmt/p5-Telnet-Cisco
make install clean
После того как порт установился напишем небольшой perl скрипт:
#!/usr/bin/perl use Net::Telnet::Cisco; @c=("192.168.1.1","192.168.1.2"); #Массив с IP-адресами того что будем бекапить @cn=("c2950.conf","c3560.conf"); #Как будет называться конфиг после бекапа @login=("login","login"); #Логин на оборудование @pass=("c2950-passwd","c3560-passwd"); #Пароль @passen=("en_passwd","en_passwd"); #Пароль на enable режим $ftp="192.168.1.254"; $ftpuser="cisco-backup"; #Логин к FTP $ftpass="ftpPasswd"; #Пароль к FTP $maindir="/backup/cisco"; #Папка доступная по FTP #Определяем папки в $maindir в формате ГОД/МЕСЯЦ/ДЕНЬ/ЧАС куда будет перемещен конфиг после закачки его на FTP $dir="$maindir/inet"; $backup_dir=`date +"%Y/%m/%d/%H"`; chomp($backup_dir); $backup_dir="$dir/$backup_dir"; #Проверяем наличие директории куда будет складываться backup и #Создаем директорию если её не существует opendir(D,$backup_dir) or `/bin/mkdir -p $backup_dir`; closedir D; #Цикл по массиву с IP-адресами железок for ($i=0;$i<=$#c;$i++){ my $h=sprintf("%s",$c[$i]); my $conf=sprintf("%s",$cn[$i]); my $user=sprintf("%s",$login[$i]); my $pas=sprintf("%s",$pass[$i]); my $pasen=sprintf("%s",$passen[$i]); #Устанавливаем соединение с железкой my $session = Net::Telnet::Cisco->new(Host => $h); $session->login($user, $pas); # Enable mode if ($session->enable($pasen)) { #Если соединение установлено, то переходим в enable $session->errmode("return"); my $bcmd=sprintf("copy startup-config ftp://%s:%s@%s",$ftpuser,$ftpass,$ftp); #Отправляем команды на backup my @output = $session->cmd('$bcmd'); my @output1 = $session->cmd($ftp); my @output2 = $session->cmd("$conf"); }else{ warn "Can't enable: " . $session->errmsg; } $session->close; `/bin/sleep 3`; #Перемещаем закаченный на FTP конфиг в backup директорию #как итог она будет: /backup/cisco/inet/ГОД/МЕСЯЦ/ДЕНЬ/ЧАС system(sprintf("/bin/mv %s/%s %s",$maindir,$conf,$backup_dir)); }
Сохраняем наш скрипт, например как backup-cisco.pl
Делаем его запускаемым:
chmod a+x backup-cisco.pl
Вот и все. Осталось проверить его работу запустив руками, а затем, если все нормально, добавить его в crontab:
40 2 * * * root /backup/cisco/backup-cisco.pl
Что означает, что каждый день в 2:40 будет запускаться наш скрипт который сохранит конфиги цисок в директории /backup/cisco/inet/ГОД/МЕСЯЦ/ДЕНЬ/ЧАС
Второй способ.
Этот способ основан на кронтабе в самой циске.
Switch> enable
Switch# configure terminal
Switch# kron policy-list backup
Switch(config-kron-policy)# cli copy startup-config ftp://192.168.1.254
Switch(config-kron-policy)# exit
Switch(config)# ip ftp username cisco-backup
Switch(config)# ip ftp password ftpPasswd
Switch(config)# file prompt quiet
Switch(config)# kron occurrence backup at 2:40 recurring
Switch(config)# exit
Switch# wri
Посмотреть текущие kron задания можно командой:
show kron schedule
Удачного вам бекапа !
Ссылки:
З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !
Авторы: Николаев Дмитрий (virus (at) subnets.ru) и Панфилов Алексей (lehis (at) subnets.ru)
Похожие статьи:
- Не найдено
admin сказал:
Наткнулся:
Копирование Cisco running-config с помощью net-snmp утилит [исправить]
Ниже приведен рабочий скрипт для копирования running-config
с маршрутизатора Cisco 2811 на BSD tftp/ftp сервер с помощью пакета net-snmp.
Для tftp ccCopyProtocol = 1, для ftp — 2. Возможен транспорт scp sftp, но их не проверял.
#!/bin/sh
#
community=private
router=192.168.2.2
tftp=192.168.100.1
file=routerA.conf
user=user
pass=password
# ccCopyProtocol = tftp
snmpset -v1 -c $community $router .1.3.6.1.4.1.9.9.96.1.1.1.1.2.111 i 1
# ccCopySourceFileType = runningConfig
snmpset -v1 -c $community $router .1.3.6.1.4.1.9.9.96.1.1.1.1.3.111 i 4
# ccCopyUserName = $user
snmpset -v1 -c $community $router .1.3.6.1.4.1.9.9.96.1.1.1.1.7.111 s $user
# ccCopyUserPassword = $pass
snmpset -v1 -c $community $router .1.3.6.1.4.1.9.9.96.1.1.1.1.8.111 s $pass
# ConfigFileType = networkFile
snmpset -v1 -c $community $router .1.3.6.1.4.1.9.9.96.1.1.1.1.4.111 i 1
# ccCopyServerAddress = $tftp
snmpset -v1 -c $community $router .1.3.6.1.4.1.9.9.96.1.1.1.1.5.111 a «$tftp»
# ccCopyDestFileType = $file
snmpset -v1 -c $community $router .1.3.6.1.4.1.9.9.96.1.1.1.1.6.111 s $file
# ccCopyEntryRowStatus = active
snmpset -v1 -c $community $router .1.3.6.1.4.1.9.9.96.1.1.1.1.14.111 i 1
#snmpset -v1 -c $community $router .1.3.6.1.4.1.9.9.96.1.1.1.1.14.111 i 4
# timeout for exec
sleep 10
# scheck
snmpwalk -v1 -c $community $router .1.3.6.1.4.1.9.9.96.1.1.1.1.10.111
# ccCopyEntryRowStatus = destroy
snmpset -v1 -c $community $router .1.3.6.1.4.1.9.9.96.1.1.1.1.14.111 i 6
#EOF
Автор: Бородин Олег
18.12.2008, 11:51Оригинал тут: http://www.opennet.ru/tips/info/1734.shtml
RexaleX сказал:
Возможно мне показалось, но во втором способе после строки:
kron occurrence backup at 2:40 recurring
не хватает:
policy-list backup
Без данной записи ничего не происходило.
07.06.2009, 11:52lehisnoe сказал:
Третий вариант (бэкап происходит раз в сутки, а также при сохранении из памяти текущей конфигурации)
04.04.2011, 09:12archive
path ftp://192.168.1.254
time-period 1440
write-memory