ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

У Вас развелось много «железа» ?

Вы хотите, чтобы конфиги складывались на 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)

Похожие статьи:

    Не найдено

Прочитано: 36 218 раз(а)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 3, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

комментария 3

  1. 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

    Автор: Бородин Олег
    Оригинал тут: http://www.opennet.ru/tips/info/1734.shtml

  2. RexaleX сказал:

    Возможно мне показалось, но во втором способе после строки:

    kron occurrence backup at 2:40 recurring

    не хватает:

    policy-list backup

    Без данной записи ничего не происходило.

  3. lehisnoe сказал:

    Третий вариант (бэкап происходит раз в сутки, а также при сохранении из памяти текущей конфигурации)
    archive
    path ftp://192.168.1.254
    time-period 1440
    write-memory

Добавить комментарий

Вам следует авторизоваться для размещения комментария.