RSS

Сохранение конфигурации с оборудования Cisco (SNMP)

11 Май

По роду работы, у многих администратор и инженеров часто встает проблема регулярного сохранения конфигурационных файлов с большого количества оборудования Cisco Systems. Эта статья освещает вариант
автоматизации этого процесса с использованием технологии SNMP.

Регулярное сохранение конфигураций оборудования можно делать как минимум 2мя способами. Первый – это коннектиться телнетом или по ssh, неважно, и потом делать copy run tftp. Это можно оформить в виде скрипта. У этого способа 2 недостатка, во первых, передача в открытом виде пароля по сети, и, во вторых, это долгий процесс по времени если сравнивать со вторым способом. Второй способ это сохранять посредством SNMP. Вкратце Simple Network Management Protocol – это технология, призванная обеспечить управление и контроль за устройствами и приложениями в сети связи путём обмена управляющей информацией между агентами,
располагающимися на сетевых устройствах, и менеджерами, расположенными на станциях управления.

Инструментарий для работы с SNMP это пакет net-snmp в частности 2 команды из этого пакета это snmpwalk и snmpset. Первая позволяет просмотреть какие MIB поддерживает устройство, а вторая позволяет собственно управлять устройством. Также для сохранения конфигов нужен tftp сервер, есть возможность сохранять на ftp но, по-моему, проще на tftp. Платформу на которой всё это городить можно выбрать разную Windows, Linux…и т.д. Я использовал Linux ибо проще всё это прикручивать.

Собственно вот сами MIB которые и позволяют делать эти шаманские действия. Оговорюсь что у цисок в частности свитчей существует IOS (Internetwork Operation System) и COS (Catalyst Operation System) это для записи конфига на tftp IOS аналог в консоли copy running-config tftp вот линк с детальным описанием

snmpset -c $RW $IPtftp .1.3.6.1.4.1.9.2.1.55.192.168.1.1 octetstring routername-confg
это для записи конфига на tftp COS аналог в консоли write net вот линк с детальным описанием

snmpset -c $RW $IPtftp .1.3.6.1.4.1.9.5.1.5.1.0 octetstring 192.168.1.1 (Устанавливаем IP tftp)
snmpset -c $RW $IPtftp .1.3.6.1.4.1.9.5.1.5.2.0 octetstring routername-confg (Задаём имя конфигу)
snmpset -c $RW $IPtftp .1.3.6.1.4.1.9.5.1.5.4.0 integer 3 (Говорим циске писать на tftp)

Желательно на циске сделать данные настройки:
это для IOS

access-list 3 remark “SNMP RW access”
access-list 3 permit 192.168.1.1
snmp-server community secret RW 3

Это для COS

set ip permit 192.168.1.1 snmp
set ip permit enable snmp
set snmp community read-write secret

Собственно вот минимальный конфиг для сохранения на цисках у которых стоит ОС IOS:
#!/usr/bin/perl
use English;
$BACKUP_DIRS = “/root/backup-conf-cisco/”;
$BACKUP_SOURCE_DIR = “/tftpboot/”;
$tftpserver = ’192.168.1.1′;
$MIB = ‘.1.3.6.1.4.1.9.2.1.55′;
$RW = ‘secret’;
# файл host-ios должен быть в формате
# cisco-one::192.168.1.2
# cisco-two::192.168.1.3 и т.д.
$filename_host = ‘/root/script/host-ios’;
#Опрашиваем все циски по SNMP из файла host
open DATA, $filename_host or die “Невозможно открыть $filename_host: $!”;
while ()
{
chomp;
# теперь в $_ есть строка и мы ее разделяем на переменные
($name, $ip) = split(/::/);
system (“snmpset -v 2c -O qv -t 5 -c $RW $ip $MIB.$tftpserver s $name”);
}
close DATA;
system (“mkdir $BACKUP_DIRS/`date +%m.%Y` -p”);
system (“tar cvzf $BACKUP_DIRS/`date +%m.%Y`/configs-`date
+%b.%d.%Y`.tar.gz $BACKUP_SOURCE_DIR >> /dev/null && rm
-f $BACKUP_SOURCE_DIR/*”);

Собственно вот минимальный конфиг для сохранения на цисках у которых стоит ОС СOS:
#!/usr/bin/perl
use English;
$tftpserver = ’192.168.1.1′;
$RW = ‘secret’;
# файл host-cos должен быть в формате
# cisco-one::192.168.1.2
# cisco-two::192.168.1.3 и т.д.
$filename = ‘/root/script/host-cos’;
open DATA, $filename or die “Невозможно открыть $filename: $!”;
while ()
{
chomp;
# теперь в $_ есть строка и мы ее разделяем на переменные
($name, $ip) = split(/::/);
# устанавливаем на циске IP tftp сервера
system (“snmpset -v 2c -O qv -t 5 -c $RW $ip .1.3.6.1.4.1.9.5.1.5.1.0 s 172.25.15.8″);
# устанавливаем имя под которым будет сохраняться конфиг
system (“snmpset -v 2c -O qv -t 5 -c $RW $ip .1.3.6.1.4.1.9.5.1.5.2.0 s $name”);
# ну а тут говорим циске сгрузить конфиг на tftp
system (“snmpset -v 2c -O qv -t 5 -c $RW $ip .1.3.6.1.4.1.9.5.1.5.4.0 i 3 “);
}
close DATA;

для сохранения конфигов с PIX я знаю только один вариант в виду того,
что они не поддерживают типы сообщений SNMP Set. Остается только первый
вариант это сохранение посредством телнета, вот сам скрипт:
#!/usr/bin/perl
use English;
# файл host-pix должен быть в формате
# cisco-one::192.168.1.2
# cisco-two::192.168.1.3 и т.д.
$filename = ‘/root/script/host-pix’;
$DIR=”/root/script/”;
# пользователь в моём случае аутентификация через tacasc+
$USER=”user”;
$PASS_USER=”passuser”;
# пароль на ENABLE
$PASS_ENABLE=”passenable”;
system(“rm -f ./temp.sh”);
open DATA, $filename or die “Невозможно открыть $filename: $!”;
while ()
{
chomp;
# теперь в $_ есть строка и мы ее разделяем на переменные
($name, $ip) = split(/::/);
system(“cd $DIR”);
system(“echo ‘#!/usr/bin/expect -f’ >> temp.sh”);
system(“echo spawn telnet $ip >> temp.sh”);
system(“echo expect ‘Username: ‘ >> temp.sh”);
system(“echo send \”$USER\\r\” >> temp.sh”);
system(“echo expect ‘Password: ‘ >> temp.sh”);
system(“echo send \”$PASS_USER\\r\” >> temp.sh”);
system(“echo sleep 3 >> temp.sh”);
system(“echo send \”enable\\r\” >> temp.sh”);
system(“echo expect ‘Password: ‘ >> temp.sh”);
system(“echo send \”$PASS_ENABLE\\r\” >> temp.sh”);
system(“echo sleep 10 >> temp.sh”);
system(“echo send ‘\”write net 172.25.15.8:config-$name\\r\”‘ >> temp.sh”);
system(“echo sleep 15 >> temp.sh”);
system(“echo send \”exit\\r\” >> temp.sh”);
system(“chmod 755 ./temp.sh”);
system(“./temp.sh”);
system(“rm -f ./temp.sh”);
}
close DATA;

оригинал: http://webdock.nnm.ru/sohranenie_konfigov_s_cisok

Реклама
 

Метки: , ,

Обсуждение закрыто.