Июн 24 2009

Скрипт backup конфигурации Cisco Catalyst. Настройка rsh на свитче.

Возвращаясь к краеугольной теме любого сисадмина к бекапам, вынужден заметить что бекап требуется не только для серверов но и для коммутаторов(switch) и аппаратных маршрутизаторов. Вылетают флешки с записанным конфигом свитча редко, но во первых это все таки случается, во вторых, имеет место еще и ошибка сисадмина, а если она подкреплена излишней самоуверенностью в виде мгновенного write memory, то бекап становится единственным спасением.
Для бекапа с помощью моего скрипта потребуется в первую очередь настроить Catalyst на выполнение удаленных команд с помощью rsh, для этого надо выполнить такие настройки:

configure terminal
no ip rcmd domain-lookup
ip rcmd rsh-enable
ip rcmd remote-host hilik 192.168.1.1 root enable

первая команда no ip rcmd domain-lookup запрещает проверку адреса хоста с которого вы соединяетесь со свитчем через DNS.
вторая ip rcmd rsh-enable — включает сам сервис rsh, а именно удаленную командную строку.
И наконец ip rcmd remote-host hilik 192.168.1.1 root enable — тут описано, что пользователь hilik(этот пользователь должен существовать на свитче), будет соединяться с хоста 192.168.1.1, на удаленном хосте он будет под rootом и enable означает, что он будет выполнять команды доступные в режиме enable.
Проверить правильность настройки можно выполнив с хоста 192.168.1.1 из под rootа такую команду:

rsh -l hilik 192.168.1.2 show running-config

192.168.1.2 — свитч на котором мы настроили rsh.
Если как результат выполнения этой команды вы увидели файл настроек своего свитча, значит все получилось. Можно переходить к самому скрипту бекапа.

Скрипт бекапа состоит из двух файлов, один из них catalyst.txt — список свитчей с именами и backup_catalyst.pl — перловый скрипйт непосредственно бекапящий настройки.
Файл catalyst.txt выглядит так:

192.168.1.2 switch1
192.168.1.3 switch2
192.168.1.4 switch3
192.168.1.5 switch4

А сам перловый скрипт такой:

#!/usr/bin/perl -w
#Список свитчей тут
$SW_LIST='catalyst.txt';
#Юзер от имени кторого бекапим свитчи
$USER='hilik';
#Текущую дату будем использовать для имени файла
#что бы иметь нужное количество бекапов
$date=`/bin/date +%d%m%Y`;\
#Бекапить будем сюда
$BACKUP_DIR='/home/backup/';
 
open(IN,"<$SW_LIST" ) or die "Ne mogu otkryt catalyst list";
while(<IN>)
{
 
    ($host, $name)=split(" ",$_);
    if($host and $name)
    {
      chomp($name);
      $file="$name.$date";
      #print $file;
      chomp($host);
      `/usr/bin/rsh -l $USER $host 'sh running-config' >$BACKUP_DIR/$file`;
      #print $k
      #print "Host $host, Name $name\n";
    }
}
close(IN);

Результатом выполнения скрипта станет для каждого свитча файл кофигурации свитчей:

ls -la /home/backup/
switch1.23072009
switch2.23072009
switch3.23072009
switch4.23072009
switch5.23072009
switch1.24072009
switch2.24072009
switch3.24072009
switch4.24072009
switch5.24072009

На каждый день свой файл.
Стоит у меня на cron:

* * * * * /root/bin/backup_catalyst.pl

Работает просто и надежно.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть