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

В продолжении статьи Backup конфига Cisco на FTP, не забудем про Juniper.

Допустим что:

192.168.1.3 — IP-адрес Juniper
192.168.1.254 — IP-адрес backup сервера

Приступим:

Для начала на наш FreeBSD backup сервер нужно установить порт, но не тот, что и в случае с циской:

cd /usr/ports/net/p5-Net-Telnet
make install clean

После того как порт установился напишем небольшой perl скрипт:

#!/usr/bin/perl

use Net::Telnet ();

@c=("192.168.1.3");  #Массив с IP-адресами того что будем бекапить
@cn=("juniper.conf");  #Как будет называться конфиг после бекапа
@login=("backup");      #Логин на оборудование
@pass=("passwd");       #Пароль

$ftp="192.168.1.254";
$ftpuser="juniper-backup";      #Логин к FTP
$ftpass="ftpPasswd";           #Пароль к FTP

$maindir="/backup/juniper";     #Папка доступная по 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]);

        #Устанавливаем соединение с железкой и ловим строку приглашения
        #ВНИМАНИЕ !!! Ваша строка приглашения может отличаться !!!
        #Все зависит от имени железки, то которое вы ей задали, и логина с которым вы туда стучитесь
        $ses = new Net::Telnet (Timeout => 10,
                        Prompt => '/backup\\@juniper. $/');

        if ($ses->open($h)) {
                #Если соединение установлено
                $ses->login($user, $pas);
                @lines = $ses->cmd("configure");
                my $bcmd=sprintf("save ftp://%s:%s\@%s/%s",$ftpuser,$ftpass,$ftp,$conf);
                #Отправляем команды на backup
                @lines1 = $ses->cmd($bcmd);

        }else{
                warn "Can't: " . $ses->errmsg;
        }
         $ses->close;
        `/bin/sleep 3`;
        #Перемещаем закаченный на FTP конфиг в backup директорию
        #как итог она будет: /backup/cisco/inet/ГОД/МЕСЯЦ/ДЕНЬ/ЧАС
        system(sprintf("/bin/mv %s/%s %s",$maindir,$conf,$backup_dir));
}

Сохраняем наш скрипт, например как backup-juniper.pl

Делаем его запускаемым:

chmod a+x backup-juniper.pl

Вот и все. Осталось проверить его работу запустив руками, а затем, если все нормально, добавить его в crontab:

0 2 * * * root /backup/juniper/backup-juniper.pl

Что означает, что каждый день в 2:00 будет запускаться наш скрипт который сохранит конфиги Juniper в директории /backup/juniper/inet/ГОД/МЕСЯЦ/ДЕНЬ/ЧАС

Удачного вам бекапа !

Ссылки:

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

Авторы: Николаев Дмитрий (virus (at) subnets.ru) и Панфилов Алексей (lehis (at) subnets.ru)

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

    Не найдено

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

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

  1. nikeboy сказал:

    Всё уже придумано до нас (с).
    См. команду archival с опцией transfer-on-commit:

    Подсказки можно смотреть прямо в JunOS:
    > help reference system archival
    archival

    Syntax

    archival {
    configuration {
    transfer-interval interval;
    transfer-on-commit;
    archive-sites {
    ftp://:@:/;
    scp://:@:/;
    }
    }
    }

    Hierarchy Level

    [edit system]

    Release Information

    Statement introduced before JUNOS Release 7.4

    Description

    Configure copying of the currently active configuration to an archive
    site. The remaining statements are described separately.

    Usage Guidelines

    See «Configuring a Router to Transfer Its Configuration to an Archive
    Site».

    Required Privilege Level

    admin—To view this statement in the configuration.
    admin-control—To add this statement to the configuration.

  2. netbug сказал:

    а как сделать для массива, состоящего из, например, 20 джуниперов и имя конфига соответствовало hostname?

    Кстати. Чтобы не было привязки к определённой строке приглашения, сделал так:
    Вместо
    Prompt => ‘/backup\\@juniper. $/’);
    написал
    $ses->open (Host=>$c[$i]);

  3. admin сказал:

    Ответил на форуме: http://subnets.ru/forum/viewtopic.php?p=4631#p4631

  4. admin сказал:

    Set source address ftp Juniper

    Так же иногда может потребоваться установить source address для исходящих с девайса FTP соединений.
    Сделать это можно двумы способами:
    1. С помощью команды: set system default-address-selection
    2. Использовать в скрипте следующий порядок команд:
    root@juniper> configure
    root@juniper# save /tmp/config.save
    root@juniper# run file copy /tmp/config.save ftp://user:pass@BACKUP-SERVER-IP/your_device_name.conf source-address НУЖНЫЙ-ВАМ-SOURCE-IP-НА-ДЕВАЙСЕ
    root@juniper# exit
    root@juniper> file delete /tmp/config.save

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

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