Скрипт 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
Работает просто и надежно.



