Перейти к содержимому
Калькуляторы

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По 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-адрес сервера

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С телнета тоже не универсально. Как минимум три варианта команды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

для 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

Изменено пользователем Antares

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По 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 моделей коммутаторов в библиотеке.

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

Изменено пользователем Demiurgos

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

+2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дать, к сожалению, не могу....

Гы, губу раскатали )))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да самому написать не особо сложно. Но возиться с каждой моделью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно и модель определить по 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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Изменено пользователем Demiurgos

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

oxidized

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

oxidized

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас