RSS

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

18 Дек

По роду работы, у многих администратор и инженеров часто встает проблема регулярного сохранения конфигурационных файлов с большого количества оборудования 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

 
Оставить комментарий

Опубликовал на 18 декабря, 2011 в LAN, Networks, WAN

 

Метки: , , ,

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