В продолжении статьи 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)
Похожие статьи:
- Не найдено
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.
27.04.2009, 16:44admin-control—To add this statement to the configuration.
netbug сказал:
а как сделать для массива, состоящего из, например, 20 джуниперов и имя конфига соответствовало hostname?
Кстати. Чтобы не было привязки к определённой строке приглашения, сделал так:
31.01.2012, 18:10Вместо
Prompt => ‘/backup\\@juniper. $/’);
написал
$ses->open (Host=>$c[$i]);
admin сказал:
Ответил на форуме: http://subnets.ru/forum/viewtopic.php?p=4631#p4631
01.02.2012, 10:31admin сказал:
Set source address ftp Juniper
Так же иногда может потребоваться установить source address для исходящих с девайса FTP соединений.
22.08.2012, 12:46Сделать это можно двумы способами:
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