xxxupg Опубликовано 17 мая, 2017 · Жалоба имеем сеть свичей фирмы блинк, хотим организовать бэкап их конфигурации и скачки их на ФТП по IP адресу к примеру, подскажите как правильнее сделать? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Demiurgos Опубликовано 17 мая, 2017 · Жалоба В случае с Длинк, по крону запускать скрипт, который по снмп шлёт команду на сохранение конфигураций на тфтп сервер Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Andrei Опубликовано 18 мая, 2017 · Жалоба По 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-адрес сервера Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
snvoronkov Опубликовано 18 мая, 2017 · Жалоба С телнета тоже не универсально. Как минимум три варианта команды. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Antares Опубликовано 18 мая, 2017 (изменено) · Жалоба модель какая?? для 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 Изменено 18 мая, 2017 пользователем Antares Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Demiurgos Опубликовано 19 мая, 2017 (изменено) · Жалоба По 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 моделей коммутаторов в библиотеке. Чтоб скрипты, ковыряющие коммутаторы, работали с новой моделью, мне достаточно дописать дополнение к библиотеке, сами скрипты править не надо. Изменено 19 мая, 2017 пользователем Demiurgos Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Negator Опубликовано 19 мая, 2017 · Жалоба Я получаю модель коммутатора по SNMP и в зависимости от модели скармливаю ему ту или иную команду. Demiurgos, поделитесь библиотекой. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Antares Опубликовано 19 мая, 2017 · Жалоба Demiurgos, поделитесь библиотекой. +1 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
snvoronkov Опубликовано 19 мая, 2017 · Жалоба Я получаю модель коммутатора по SNMP и в зависимости от модели скармливаю ему ту или иную команду. Не только модель, но и версия прошивки. :-( Demiurgos, поделитесь библиотекой. +2 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Demiurgos Опубликовано 19 мая, 2017 · Жалоба Я получаю модель коммутатора по SNMP и в зависимости от модели скармливаю ему ту или иную команду. У меня по тому-же принципу работает, используется sysObjectID (.1.3.6.1.2.1.1.2). Только это определение модели происходит не в каждом скрипте, а в библиотеке. Дать, к сожалению, не могу. Там есть внутренняя информация (завязки на биллинг, мониторинги, учёт и т.д.), которую надо выкашивать. Хочу оформить всё это в открытый доступ вместе с "картой сети" для управления коммутаторами на основе этой библиотеки. Но пока руки не доходят. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Antares Опубликовано 19 мая, 2017 · Жалоба Дать, к сожалению, не могу.... Гы, губу раскатали ))))) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Negator Опубликовано 19 мая, 2017 · Жалоба Да самому написать не особо сложно. Но возиться с каждой моделью. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Andrei Опубликовано 19 мая, 2017 · Жалоба Можно и модель определить по 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 А уж потом в зависимости от модели скармливать разные команды свичу. Но универсального все равно написать не получилось. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zhenya` Опубликовано 21 мая, 2017 · Жалоба Sysobj универсальнее. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
xcme Опубликовано 22 мая, 2017 · Жалоба К длинкам (и не только) можно еще вот эту штуку приспособить. Для основных моделей длинков обсуждаемый функционал уже зашит в прилагаемые модули. Качаем, пишем коммунити в конфиг, запускаем, открываем 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. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Demiurgos Опубликовано 23 мая, 2017 (изменено) · Жалоба В общем, библиотеку выкладываю. Предупреждения: 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 Изменено 23 мая, 2017 пользователем Demiurgos Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Andrei Опубликовано 23 мая, 2017 · Жалоба Входные параметры: 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 Как добавлять специфику разных моделей свича - думаю, что понятно Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
micol Опубликовано 27 мая, 2017 · Жалоба oxidized Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
npokypop Опубликовано 9 августа, 2017 · Жалоба oxidized Хотим попробовать такое решение, есть у кого положительный опыт с оборудованием Mikrotik? D-Link? SNR ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
micol Опубликовано 16 августа, 2017 · Жалоба oxidized Хотим попробовать такое решение, есть у кого положительный опыт с оборудованием Mikrotik? D-Link? SNR ? D-Link,SNR,Cisco - собираю, и в git-е хранится со всеми плюшками git-a хренотиков нема, не держим это поделие Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...