В продолжении статьи 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)
