Авг 11

Backup конфигурации cisco на сервер Linux

Опубликовано в Cisco, Unix

Backup конфигурации cisco на сервер Linux

Сегодня нашей задачей будет бэкап устройств cisco. Резервное копирование будем настраивать через tftp сервис на сервере с ОС Linux — мы покажем этот процесс на примере Ubuntu 10.04.

На первом этапе необходимо поставить сервис atftpd:

sudo apt-get install atftpd

Корректируем настройки запуска сервиса:

sudo vi /etc/default/atftpd
USE_INETD=false
OPTIONS=»—daemon —port 69 —tftpd-timeout 300 —retry-timeout 5 —mcast-port 1758 —mcast-addr 239.239.239.0-255 —mcast-ttl 1 —maxthread 100 —verbose=5 /var/tftp»

Запускаем команды.

sudo invoke-rc.d atftpd start
cd /var
sudo mkdir tftp
sudo chmod -R 777 tftp/
sudo chown -R nobody tftp/
sudo /etc/init.d/atftpd restart

Устанавливаем необходимые модули к perl (если у вас они ещё не установлены).

sudo apt-get install libnet-telnet-perl
sudo apt-get install libnet-telnet-cisco-perl
sudo apt-get install libmail-sendmail-perl

Создаем скрипт бекапа.

touch back.pl
vi back.pl

Заливаем содержимое.

#!/usr/local/bin/perl
use Net::Telnet();
use Net::Telnet::Cisco;
use Mail::Sendmail;
use Time::localtime;
$tm = localtime;
my $log=»»;
my $log_t=»»;
my $tmp;
my $is_login=0;
my $alive=»»;
my $server_ip=»192.168.0.1″;
my $cisco_ip=»192.168.0.1″;
my $login=»cisco»;
my $password=»cisco»;

($DAY, $MONTH, $YEAR) = ($tm->mday, $tm->mon, $tm->year);

$ip=$cisco_ip;
$session = new Net::Telnet(Timeout => 5, Errmode=>»return»);
$session->open(Host=>$ip, Port => 23);

$msg=$session->errmsg;
if(!$msg)
{
$txt = «\t\tOK!\n»;
print $txt; $log=$log.$txt;
$alive=$alive.$ip.»\n»;
$txt=»Logging on GW_Center «;
print $txt; $log=$log.$txt;
# Cisco
$t=Net::Telnet::Cisco->new(Errmode=>»return»,Timeout=>20,Host=>$ip,Input_log=>’tmp_cisco.txt’,Output_log=>’tmp_cisco1.txt’);
if ($t->login($login,$password)){$is_login=1;} else{$is_login=0;};

if($is_login>0){$txt=»\t\tOK!\n»;} else{$log_fail=$log_fail.»$ip\n»,$txt=»\t\tfailed!\n»;$log_t=$log_t.»$ip\tlogin_failed!!\n»;};

print $txt; $log=$log.$txt;

$txt=»Uploading cmd…»;
print $txt; $log=$log.$txt;
$is_cmd=0;

if ($is_login>0)
{
$t->cmd(‘terminal length 0′);
$t->cmd(«copy running tftp://$server_ip/cisco.run.$DAY-$MONTH-$YEAR\n\n\n»);
$t->cmd(«copy vlan.dat tftp://$server_ip/cisco.vlan.dat.$DAY-$MONTH-$YEAR\\n\n\n»);
$is_cmd=1;
#$res=@lin;
$t->cmd(«logout»);
$t->close;
};

if($is_cmd)
{
$txt=»\t\tOK!\n\n»;
$log_t=$log_t.»$ip\tOK!\n»;
}
else
{
$txt=»\t\tfailed!\n»;
$log_t=$log_t.»$ip\tfailed!\n»;
}
print $txt; $log=$log.$txt;
$t->close;
}

%mail =
(
To => ‘anton@*****.ru’,
From => ‘anton@*****.ru’,
Subject => ‘Cisco BACKUP Report’,
Message => «Backup device: cisco\n$log_t\n$log\n»,
SMTP => ‘relay’
);

sendmail(%mail) or die $Mail::Sendmail::error;
print «OK. Log says:\n», $Mail::Sendmail::log;

Настраиваем cron для ежедневной работы скрипта

sudo vi /etc/crontab
1 23 * * * root perl /home/admin/back.pl
sudo /etc/init.d/cron stop
sudo /etc/init.d/cron start

Комментарии: 0 » Метки: , , , , ,

You must be logged in to post a comment.