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

The answer you entered to the math problem is incorrect.

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


{


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 (<DATA>)


{


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 (<DATA>)


{


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



Комментарии

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

Пример: 1+1, ответ: 2
Содержание этого поля является приватным и не предназначено к показу.

Ñòàðí/A>