Jump to content
Калькуляторы

конфигурационный файл длинка

имеем сеть свичей фирмы блинк, хотим организовать бэкап их конфигурации и скачки их на ФТП по IP адресу к примеру, подскажите как правильнее сделать?

Share this post


Link to post
Share on other sites

В случае с Длинк, по крону запускать скрипт, который по снмп шлёт команду на сохранение конфигураций на тфтп сервер

Share this post


Link to post
Share on other sites

По snmp у меня не получилось, на сколько я помню потому, что oid-ы у разных моделей разные. Более-менее универсально в результате получилось вот так:

#!/usr/bin/expect
set IP [lindex $argv 0]
set CFG_NAME [lindex $argv 1]
set SERVER [lindex $argv 2]

log_user 0
spawn telnet "$IP"
set timeout 10
expect "ame:" { send "admin\n" }
expect "ord:" { send "______тут_пароль_на_свич____\n" }
expect "#" { send "upload configuration $SERVER  $CFG_NAME running \n" }
expect "#" { send "logout\n" }
log_user 1

Входные параметры:

1 - ip-адрес свича

2 - имя, с которым конфиг будет сохранен на сервере

3 - ip-адрес сервера

Share this post


Link to post
Share on other sites

модель какая??

для dgs-3120

snmpset -v2c -c private ip-свитча 1.3.6.1.4.1.171.12.1.2.18.1.1.3.3 a ip-tftp-servera 1.3.6.1.4.1.171.12.1.2.18.1.1.5.3 s config.cfg 1.3.6.1.4.1.171.12.1.2.18.1.1.7.3 s config.cfg 1.3.6.1.4.1.171.12.1.2.18.1.1.8.3 i 2 1.3.6.1.4.1.171.12.1.2.18.1.1.12.3 i 3

 

для des-3200

snmpset -v2c -c private ip-свитча 1.3.6.1.4.1.171.12.1.2.1.1.6.3 i 3 1.3.6.1.4.1.171.12.1.2.1.1.4.3 i 2 1.3.6.1.4.1.171.12.1.2.1.1.5.3 s ip-свитча 1.3.6.1.4.1.171.12.1.2.1.1.7.3 i 2 1.3.6.1.4.1.171.12.1.2.1.1.3.3 a ip-tftp-servera 1.3.6.1.4.1.171.12.1.2.1.1.8.3 i 3

Edited by Antares

Share this post


Link to post
Share on other sites

По snmp у меня не получилось, на сколько я помню потому, что oid-ы у разных моделей разные.

Вот именно по этому, когда появилась в пользовании третья модель коммутатора я начал подходить к делу с точки зрения ООП.

Накидал на перле библиотеку, позволяющую однотипно работать с коммутаторами доступа вне зависимости от модели и вендора. Чего и вам советую.

В результате, к примеру, чтоб сделать сохранение мне достаточно сделать так:

 

#!/usr/bin/perl

use lib "/opt/lib_switch/";

use DBI;
use LIBSwitch;

$server="10.10.10.10";
$hostip="10.20.20.20";
$dir="sw_config/";


$device=make_switch_object($hostip); # Создаём объект "свитч"
if (defined $device->{snmp}) { # Проверяем что доступен
   $filename=$dir.$device->{type_name}."_".$device->{ip}."_".$device->get_system_location().".conf"; # Сочиняем название для файла
   $device->config_to_tftp($server,$filename); # Cохраняем конфигурацию
}

И меня абсолютно не волнует что там за свитч и какого вендора.

 

Сейчас у меня уже более 20 моделей коммутаторов в библиотеке.

Чтоб скрипты, ковыряющие коммутаторы, работали с новой моделью, мне достаточно дописать дополнение к библиотеке, сами скрипты править не надо.

Edited by Demiurgos

Share this post


Link to post
Share on other sites

Я получаю модель коммутатора по SNMP и в зависимости от модели скармливаю ему ту или иную команду.

Demiurgos, поделитесь библиотекой.

Share this post


Link to post
Share on other sites

Я получаю модель коммутатора по SNMP и в зависимости от модели скармливаю ему ту или иную команду.

Не только модель, но и версия прошивки. :-(

Demiurgos, поделитесь библиотекой.

+2

Share this post


Link to post
Share on other sites

Я получаю модель коммутатора по SNMP и в зависимости от модели скармливаю ему ту или иную команду.

У меня по тому-же принципу работает, используется sysObjectID (.1.3.6.1.2.1.1.2). Только это определение модели происходит не в каждом скрипте, а в библиотеке.

Дать, к сожалению, не могу. Там есть внутренняя информация (завязки на биллинг, мониторинги, учёт и т.д.), которую надо выкашивать.

 

Хочу оформить всё это в открытый доступ вместе с "картой сети" для управления коммутаторами на основе этой библиотеки. Но пока руки не доходят.

Share this post


Link to post
Share on other sites

Можно и модель определить по snmp, например:

root@gate# snmpwalk -v 2c -c public 192.168.254.69 iso.3.6.1.2.1.1.1.0
iso.3.6.1.2.1.1.1.0 = STRING: "DES-3200-28/C1 Fast Ethernet Switch"
root@gate# snmpwalk -v 2c -c public 192.168.254.69 iso.3.6.1.2.1.1.1.0 | awk '{ print $4 }'  | sed  -e 's/\"//g'
DES-3200-28/C1

А уж потом в зависимости от модели скармливать разные команды свичу.

Но универсального все равно написать не получилось.

Share this post


Link to post
Share on other sites

К длинкам (и не только) можно еще вот эту штуку приспособить. Для основных моделей длинков обсуждаемый функционал уже зашит в прилагаемые модули. Качаем, пишем коммунити в конфиг, запускаем, открываем URL:

http://<srv_ip>:7377/<user>/<switch_ip>/<comm_index>/set_CfgUpload/<tftp_ip>/<filename>

 

Вернет JSON:

{"request": {"errors": [0], "comm_index": "<comm_index>", "data": [{"1": "<tftp_ip>", "0": "set_CfgUpload", "2": "<filename>"}], "user": "<user>", "target": "<switch_ip>"}, "response": {"sys_uptime": "12345678", "query_time": "3", "target": "<switch_ip>", "sys_location": "XXXX", "sys_descr": "D-Link DES-3028 Fast Ethernet Switch", "model": "DES-3028", "sys_name": "XXXX", "data": {"set_CfgUpload": 1}}}

 

И положит файлик на TFTP.

 

P.S. Точил под FreeBSD. Чтобы запустить как демона на вашем любимом дистрибутиве никсов может понадобится поправить скрипт автозапуска. Если вручную запускать то сразу взлетит при наличии нужных модулей для Python.

Share this post


Link to post
Share on other sites

В общем, библиотеку выкладываю.

Предупреждения:

1) Проверить работоспособность всех модулей не мог, поскольку уже некоторое время не работаю в провайдере, и такого зоопарка сейчас под рукой нет.

2) Ошибки возможны исходя из пункта 1). Поправить - проблем не должно у вас возникнуть.

3) Естественно, если вы себе что-то сломаете, используя мою библиотеку - сами виноваты. Проверяйте сначала на стенде.

4) Некоторые методы работают не для всех устройств (хотя это и возможно реализовать), связано это с тем, что методы становились актуальны, когда некоторые устройства уже были выведены из эксплуатации. В некоторых случаях, методы не представляли интересов для меня в данном устройстве, в виду их "функциональных обязанностей" в некогда эксплуатируемой мной сети.

 

Для понимания логики. В данной библиотеке, все представленные устройства воспринимаются как L2, потому не оперируют понятиями IP или VLAN интерфейсов. Есть только один интерфейс - управления. Кроме того, поскольку основную массу составляют коммутаторы D-Link, то и термины используются из "методички D-Link".

 

 

Переходим к конкретике.

Список в разной степени поддерживаемых устройств:

 

D-Link DES-1210-10ME hw Rev. b1

D-Link DES-1210-28

D-Link DES-1210-28ME hw Rev. b2

D-Link DES-1210-28ME hw Rev. b3

D-Link DES-1228 hw Rev. A

D-Link DES-1228 hw Rev. B

D-Link DES-3010F

D-Link DES-3010G

D-Link DES-3026

D-Link DES-3028

D-Link DES-3052

D-Link DES-3200-10 hw Rev A/B

D-Link DES-3200-10 hw Rev C

D-Link DES-3200-28 hw Rev A/B

D-Link DES-3200-28 hw Rev C

D-Link DES-3200-52 hw Rev C

D-Link DES-3526

D-Link DGS-1210-28/ME

D-Link DGS-3100-24ST

D-Link DGS-3100-24TG

D-Link DGS-3120-24SC

D-Link DGS-3420-26SC

D-Link DGS-3620-28SC

Edge-Core ECS3510-28t

Edge-Core ECS3510-52t

Edge-Core ES3528m

 

 

 

Что реализовано(реализация для конкретного устройства из списка не гарантируется). Приведу без упорядочивания.

 

 

1) Чтение/установка SNMP sysName

2) Чтение/установка SNMP sysLocation

3) Получение/установка подписей портов

4) Тестирование кабеля

5) Получение MAC адресов из указанного VLAN

6) Получение MAC адреса самого устройства

7) Получение состояния линков на порту (Up/Down)

8) Сохранение текущей конфигурации на TFTP

9) Сохранение текущей конфигурации в nvram

10) Получение номера порта-аплинка

11) Получение портов, входящих в данный VLAN

12) Выполнение команд по Telnet

13) Состояние STP на портах

14) Время работы системы

15) Получение/Установка административного состояние портов (On/Off)

16) Получение/установка оперативного состояния портов (speed/duplex)

17) Получение адреса шлюза по умолчанию

18) Получение VLAN управления

19) Получение списка статических VLAN

20) Получение/редактирование/удаление/создание VLAN

21) Управление MAC-notify

22) Управление IMPB

23) Управление DHCP-Snooping

24) Получение версии Firmware

25) Изменение IP/Mask/Gateway для интерфейса управления

26) Управление traffic-segmentation

 

 

 

Известные проблемы:

Возможно некорректное отображение портов, входящих в VLAN для DGS-3620. Так же для 3620 реализована работа в стеке при условии, что ведомый коммутатор такой-же (т.е. стекируются несколько коммутаторов 3620-28SC). Однако, на деле больше двух устройств в стеке не использовалось.

 

К библиотеки приложил файлик examples.pl. На сколько хватило терпения, в нём описал как пользоваться имеющимися функциями.

libswitch.tar.gz

Edited by Demiurgos

Share this post


Link to post
Share on other sites

Входные параметры:

1 - ip-адрес свича

2 - имя, с которым конфиг будет сохранен на сервере

3 - ip-адрес сервера

Или вот так чисто средствами bash (немного модернизировал то, что выкладывал ранее):

#!/bin/bash
IP=$1
CFG_NAME=$2
SERVER=$3

model=`snmpwalk -v 2c -c public $IP iso.3.6.1.2.1.1.1.0 |  sed -e 's/.*"\(.*\)".*/\1/'`
#echo $model

if [ "$model" == "DES-3200-28/C1 Fast Ethernet Switch" ] ||
  [ "$model" == "DGS-3120-24SC Gigabit Ethernet Switch" ]
then
   str="upload cfg_toTFTP "$SERVER" dest_file "$CFG_NAME
   elif [ "$model" == "DGS-3100-24TG  Gigabit stackable L2 Managed Switch" ]
   then
       str="upload configuration "$SERVER" "$CFG_NAME" running"
   else
       str="upload configuration "$SERVER" "$CFG_NAME
fi
#echo $str

/usr/bin/expect<<EOF
log_user 0
spawn telnet $IP
set timeout 10
expect "ame:" { send "admin\n" }
expect "ord:" { send "______тут_пароль_на_свич________\n" }
expect "#" { send "$str\n" }
expect "#" { send "logout\n" }
log_user 1
EOF

Как добавлять специфику разных моделей свича - думаю, что понятно

Share this post


Link to post
Share on other sites

oxidized

Хотим попробовать такое решение, есть у кого положительный опыт с оборудованием Mikrotik? D-Link? SNR ?

Share this post


Link to post
Share on other sites

oxidized

Хотим попробовать такое решение, есть у кого положительный опыт с оборудованием Mikrotik? D-Link? SNR ?

 

D-Link,SNR,Cisco - собираю, и в git-е хранится со всеми плюшками git-a

хренотиков нема, не держим это поделие

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.