Название: написать прогу управления "умными свичами" Отправлено: white_crow от Июнь 29, 2012, 11:56 Доброго времени суток.
Начал изучать qt для себя. Я одмин в сетке. Есть сотни однотипных свичей. Сейчас я их настраиваю вручную (каждый по очереди через командную строку (CLI)). Там сотни параметров и фишек. Если нужно поменять что-то однотипное - было бы неплохо задать "шаблон" и послать на все свичи. свичи можно настраивать через следующие протоколы telnet, ssh, snmp, http. Вот хочу написать прогу сам себе. (уже написал свое первое приложение - IP калькулятор простенький) Посоветуйте - какой протокол управления мне выбрать (в контексте Qt) ? Критерии следующие: - простота реализации - безопасность в данном случае не волнует (т.е. ssh не обязательно (хотя только он не передает все данные в открытом виде по сети, включая пароль)). (если кому интересно - почему не волнует безопасность - потому что даже зная пароль от свича - юзеры не могут поулчить доступ к нему - потому что на свчие настроен отдельный VLAN управления, и задан список IP адресов, с которых разрешен вход в управление - (в списке тока мой IP адрес, а сменить адреса юзеры себе не могут - тоже одна из фич свича...)) Через web и snmp - не все параметры коммутатора можно изменить. К тому же snmp - не имеет подтверждение выполнения (хотя можно просто еще раз считать данные из свчиа и если парметр уже новый - значит команда прошла удачно). И изучать проприетарные mib к свичам - тоже не охота. Склоняюсь к телнету - так как формат команд мне уже привычен и знаком. и протокол очень простой. И можно проанализировать результат выполнения команд. Подскажите куда рыть по поводу Qt+ телнет. И еще я так понимаю - мне нужно писать прогу - чтобы она параллельно слала указанный набор команд на все свичи из списка, иначе последовательно это будет очень долго. Нужно создавать потоки? Или запускать копии, например консольных приложений, которые в фоне по телнету делают свою работу параллельно, приняв нужные параметры? А GUI только для "обвязки" и удобства выбора списка свичей и профилей конфигов для свичей? Название: Re: написать прогу управления "умными свичами" Отправлено: Bepec от Июнь 29, 2012, 12:01 Насколько я тебя понимаю - тебе нужно просто послать дофига дофига команд на сотни ip адресов :) Хоть в протоколах не силён (разве только в своих силён аки бык), скажу - выбирай что тебе больше подходит из протоколов и изучай. http, telnet самые простые. далее snmp и последним ssh.
Название: Re: написать прогу управления "умными свичами" Отправлено: white_crow от Июнь 29, 2012, 12:02 Да . именно так.
выбрал telnet : ) Толкните дальше, я уже много форумов почитал, погуглил, факи и доки почитал - в голове каша.... нужен волшебный пинок...: ) И вот по-поводу этого прокомментируйте И еще я так понимаю - мне нужно писать прогу - чтобы она параллельно слала указанный набор команд на все свичи из списка, иначе последовательно это будет очень долго. Нужно создавать потоки? Или запускать копии, например консольных приложений, которые в фоне по телнету делают свою работу параллельно, приняв нужные параметры? А GUI только для "обвязки" и удобства выбора списка свичей и профилей конфигов для свичей? Название: Re: написать прогу управления "умными свичами" Отправлено: alexis031182 от Июнь 29, 2012, 12:05 Сделайте просто GUI-фронтэнд к консоли. Во-первых, это будет быстрее. Во-вторых, у Вас будет возможность использовать любой из протоколов, иначе, если писать их поддержку самому, уж очень много времени уйдёт.
Название: Re: написать прогу управления "умными свичами" Отправлено: alexis031182 от Июнь 29, 2012, 12:06 И еще я так понимаю - мне нужно писать прогу - чтобы она параллельно слала указанный набор команд на все свичи из списка, иначе последовательно это будет очень долго. GUI-фронтэнд к консоли + QProcess.Нужно создавать потоки? Или запускать копии, например консольных приложений, которые в фоне по телнету делают свою работу параллельно, приняв нужные параметры? А GUI только для "обвязки" и удобства выбора списка свичей и профилей конфигов для свичей? Название: Re: написать прогу управления "умными свичами" Отправлено: white_crow от Июнь 29, 2012, 12:12 Ага. значит с консолью и фронтендом я правильно мыслил.
Но тогда вроде как многопоточность особо не нужна. В том смысле, что - через фронтенд будет запускаться бэкенд (консольное приложение , которая приняв параметры (адрес свича и команды)) - уходит в фон и выполянется, а фронтенд вызывает следующую копию консольного приложения уже с другими параметрами из списка. т.е. тут не нужно ждать выполения бэкенда, а значит нечего распараллеливать с помощью QProcess. Так ? P.S. кстати, консольная софтинка у меня уже написана - на bash + expect = принимает параметры из командной строки и по телнету отсылает команды на свичи. Я бы и дальше так и работал - но хочу скинуть с себя на сотрудников с меньшими правами доступа и знаниями (чтобы им не тупить в консоли "линагза", чтобы не давать доступ, чтобы не видели в совсем уж явно пароли). Вот почему захотелось гуи. Но, судя по всему - мне совсем не много придется писать - чтобы "подцепить" готовый бэкенд... Название: Re: написать прогу управления "умными свичами" Отправлено: Bepec от Июнь 29, 2012, 12:16 Да, если нужен самый простой работающий вариант.
Нет, если нужна ещё и система контролирующая, скажем так, узлы. Мониторящая параметры и прочее :D Название: Re: написать прогу управления "умными свичами" Отправлено: white_crow от Июнь 29, 2012, 12:19 Для мониторинга давно юзается готовая штука - zabbix называется - свободное ПО - для мониторинга сетевых служб и тысячи их параметров состояния, железа и прочее. Рисует кучу красифых графиков, есть разные события , сигнализация и прочие плюшки....
А мне именно для массового управления однотипным сетевым железом... Я уже все понял - как проще сделать, только подтвердите мою мысль. что мне тут даже абсолютно не нужна многопоточность (на уровне фронтенда....) (ибо в фоне можно запустить кучу копий backend приложения...) Название: Re: написать прогу управления "умными свичами" Отправлено: white_crow от Июнь 29, 2012, 12:33 А, хотя вот н7юансы возникают:
- если тупо запускать в фоне консольные команды - тогда как контролировать результат выполнения команды..... - и если дать прогу с фронтендом какому-нить сотруднику, он ее ставит на винде без настроеного окуржения для бэкенда (который настроен на linux серваке). Либо нужно под венду проработать аналогичный бэкенд и всякий раз его настравиать на разных windows XP (после очередной переустанвоки), либо как-то передавать параметры по сети на сервер, на котором останется бэкенд)... Ну, а если уж совсем круто делать (долго и на перспективу) - нужно, как и вы и сказали - полностью пилить все в одной софтине....включая и телнет, и анализ ответов, и многопоточность....и профили конфигов (и брать списки свичей из базы) и прочее... если будет вдохновение - может попробую потиху пилить такую шткуку....(ибо времени появилось свободного достаточно...) Название: Re: написать прогу управления "умными свичами" Отправлено: alexis031182 от Июнь 29, 2012, 12:42 А, хотя вот н7юансы возникают: Из QProcess по моему есть возможность получать результат выполнения.- если тупо запускать в фоне консольные команды - тогда как контролировать результат выполнения команды..... - и если дать прогу с фронтендом какому-нить сотруднику, он ее ставит на винде без настроеного окуржения для бэкенда (который настроен на linux серваке). Либо нужно под венду проработать аналогичный бэкенд и всякий раз его настравиать на разных windows XP (после очередной переустанвоки), либо как-то передавать параметры по сети на сервер, на котором останется бэкенд)... Тогда GUI-фронтэнд, устанавливаемый на win-клиентах может через сокеты (через самописный протокол) посылать команды Console-фронтэнду, устанавливаемому на сервере.Ну, а если уж совсем круто делать (долго и на перспективу) - нужно, как и вы и сказали - полностью пилить все в одной софтине....включая и телнет, и анализ ответов, и многопоточность....и профили конфигов (и брать списки свичей из базы) и прочее... если будет вдохновение - может попробую потиху пилить такую шткуку....(ибо времени появилось свободного достаточно...) Название: Re: написать прогу управления "умными свичами" Отправлено: white_crow от Июнь 29, 2012, 12:54 ок, буду пилить пробовать по-тиху.
Спасибо за ответы. Название: Re: написать прогу управления "умными свичами" Отправлено: DmitryM от Июнь 29, 2012, 14:13 ИМХО для таких целей лучше Python/Perl, у них куча библиотек для работы с различными протоколами.
Название: Re: написать прогу управления "умными свичами" Отправлено: alex312 от Июнь 29, 2012, 14:15 .... http://qt-project.org/doc/qt-4.8/qprocess.html#communicating-via-channels- если тупо запускать в фоне консольные команды - тогда как контролировать результат выполнения команды..... .... Название: Re: написать прогу управления "умными свичами" Отправлено: white_crow от Июнь 29, 2012, 14:57 ИМХО для таких целей лучше Python/Perl, у них куча библиотек для работы с различными протоколами. Ну так или bash, как в моем случае уже сделано... : )Но ведь речь идет об "морде". А веб морду к Python/Perl не охота делать (аллергия на веб интерфейс : ) да и вообще - хочется что-то уж одно изучить....Вот читал долго и выбрал Qt. Думаю - вполне можно запилить GUI приложение (причем скомпилить на win, linux, MAC). Название: Re: написать прогу управления "умными свичами" Отправлено: DmitryM от Июнь 29, 2012, 16:53 А веб морду к Python/Perl не охота делать (аллергия на веб интерфейс : ) PyQt, а так же Tcl/TkВот читал долго и выбрал Qt. Думаю - вполне можно запилить GUI приложение (причем скомпилить на win, linux, MAC). Qt в первую очередь библиотека языка C++, а на C++ вы будете делать долго и мучительно, в первую очередь из-за работы через telnet, ssh, snmp ;)Название: Re: написать прогу управления "умными свичами" Отправлено: white_crow от Июнь 29, 2012, 17:40 я думаю вы преувиличиваете - телнет достаточно простой протокол (как грабли) - так что реализовать мою задачу на Qt/С++ - это вполне тривиальная задача, не хочу я перл или питон ради этого изучать...
а для ssh и snmp тоже есть свободные либы, что неудивительно. И даже не важно на чем они написаны - хотя есть и на С++. Название: Re: написать прогу управления "умными свичами" Отправлено: Bepec от Июнь 29, 2012, 19:14 ДмитрийМ вы ооооООчень сильно преувеличиваете :D На С++ написано гораздо больше по этим протоколам, чем на питоне и иже с ним. Соответсвенно библиотек и примеров в разы больше.
Так что удачи Белому ворону :D Название: Re: написать прогу управления "умными свичами" Отправлено: white_crow от Июнь 29, 2012, 20:12 спасибо, удача мне не помешает...
Название: Re: написать прогу управления "умными свичами" Отправлено: OKTA от Июнь 29, 2012, 20:41 а SNMP уже не канает??
и что за коммутаторы? Название: Re: написать прогу управления "умными свичами" Отправлено: white_crow от Июнь 29, 2012, 21:06 я уже писал про snmp - реально сложнее, чем телнет - mib нужно изучить, не вполне очевидное дерево параметров и типов - нужно изучать доки с нуля, а команды телнет уже изучены . И в телнете можно ответ анализировать.
Хотя, при желании можно было бы и snmp - c точки зрения уровня сетевой модели - там все тоже просто - посылается строка с параметрами по UDP и все дела (я смотрел снифером). Просто реально некоторые вещи очень неудобно там делать. Самое важное - по snmp не все можно настроить. Коммутаторы Zyxel MES-3528, ES-3124, MES-3712F, GS-4012F, XGS-4728F Название: Re: написать прогу управления "умными свичами" Отправлено: kostya2vntu от Июль 02, 2012, 17:11 Не вижу никаких проблем с телнетом. Когда-то писал подобную штуковину, правда управлял не свичами а турникетами.
Уже много кто подобное делал - https://www.google.com/search?q=qt4+telnet Название: Re: написать прогу управления "умными свичами" Отправлено: kostya2vntu от Июль 02, 2012, 17:13 Даже так: http://doc.qt.nokia.com/solutions/4/qttelnet/qttelnet.html
Название: Re: написать прогу управления "умными свичами" Отправлено: DmitryM от Июль 03, 2012, 11:41 ДмитрийМ вы ооооООчень сильно преувеличиваете :D На С++ написано гораздо больше по этим протоколам, чем на питоне и иже с ним. Соответсвенно библиотек и примеров в разы больше. Telnetlib (http://docs.python.org/library/telnetlib.html) в составе CPython, так что ничего не надо писать и прикручивать.Так что удачи Белому ворону :D Название: Re: написать прогу управления "умными свичами" Отправлено: Bepec от Июль 03, 2012, 11:42 Дмитрий не путай ) Там такая же библиотечка/дополнение. Таких сотни/тысячи/миллионы для С++ и подключаются одной левой )
Не делай трагедии из писанины и прикручивания :D Она порой даже приятна и полезна. Название: Re: написать прогу управления "умными свичами" Отправлено: white_crow от Июль 08, 2012, 17:23 Зря пугали не юзать Qt и С++ и Telnet.
Все достаточно просто и куча готового кода существует. И подключать сторонние либы - никто не мешает. Удалось разобраться с готовым классом и примером телнет клиента. http://code.google.com/p/qtelnetperso/source/browse/trunk/v2/libs/solutions/qttelnet-2.1-opensource/ Удалось обойтись без костылей типа Цитировать GUI-фронтэнд, устанавливаемый на win-клиентах может через сокеты (через самописный протокол) посылать команды Console-фронтэнду, устанавливаемому на сервере. И не нужен сервер для бэкенда.Все в рамках одной программы, которую можно скомпилить на разные целевые платформы. Удалось "локализовать" вышеуказаный пример - для своих нужд, вырезать лишнее, и заставить компилироваться и работать. ("из коробки" - сразу не компилился - нюансы с анахронизмами : ) Неделю потратил уже на простые вещи. Уже привык к Qt Creator. Потиху привыкаю к синтаксису С++, к особенностям ООП, параметрам в .pro фале и прочим хитростям и тонкостям. Читаю книжки...: ) Долго не получалось скомпилить пример. Потом удалось скомпилить. Но долго не получалось авторизоваться на "телнет-сервере" - начал изучать дамп трафика - очень помогло. На данный момент в интерактивном режиме работает простейший телнет клиент. Теперь буду распаралеливать и автоматизировать без интерактива - выполнять шаблоны команд на N свичах (по списку из файла (позже из БД брать). Короче - постепенно вникаю в тему ) Пока что от ООП и C++ немного едет башня - все-таки сломали мне мозг паскалем и процедурным программированием ))) P.S. На данный момент есть нюансы некритичные - при компиляции (возникает 2 Warning). (При этом все работает, но раздражает) Makefile.Debug:105: предупреждение: overriding commands for target `debug/moc_qttelnet.cpp' Makefile.Debug:102: предупреждение: ignoring old commands for target `debug/moc_qttelnet.cpp' При этом в книжке прочитал, что теперь не нужно в конце файла инклюдить moc файл. Но без инклюда совсем не компилиться... так что оставил #include "main.moc" и #include "qttelnet.moc" в соответстующих файлах. Вот на базе чего я все делаю: http://code.google.com/p/qtelnetperso/source/browse/trunk/v2/libs/solutions/qttelnet-2.1-opensource/ Если кому не лень поковырять - посмотрите... - еще валит "мусор" (спец. символы) от телнет-сервера. Это никак не мешает, и даже реализована функция stripCR - которая с помощью RegExp типа должна резать (.remove) этот мусор, но похоже не режет... Код: private: Код: private slots: Название: Re: написать прогу управления "умными свичами" Отправлено: Bepec от Июль 08, 2012, 19:19 Что сказать - поздравляю с почином.
Насчёт инклуда моков - видимо используемая вами библиотечка их требует. Хотя хз хз. А мусор надо просто отделить и вырезать - там же символьные команды походу. Посмотрите что у вас в вызове stripCR(const QString &msg) приходит. Если не удаляется, значит надо менять regExp. Темку тогда на форуме создайте, а то это та ещё головная боль :D Название: Re: написать прогу управления "умными свичами" Отправлено: white_crow от Июль 08, 2012, 22:25 думаю, нюанс в том, что телнет "работает" с ASCII. Надо видимо копать в сторону QString to ASCII или QbyteArray - и уже там анализировать и фильтровать спец символы... Потому что QString - это двухбайтовые символы, так ?
Название: Re: написать прогу управления "умными свичами" Отправлено: kostya2vntu от Июль 09, 2012, 23:41 Все так любят regexp'ы...
Можно ведь и без них обойтись, просто пройтись по строке и оставить только нужные символы. P.S. Это так, на крайний случай. Название: Re: написать прогу управления "умными свичами" Отправлено: Bepec от Июль 10, 2012, 07:23 РегЭкспы универсальны, но избыточны. Иногда проще свою функцию написать, как заметил Константин :)
Название: Re: написать прогу управления "умными свичами" Отправлено: oath от Июль 28, 2012, 17:15 Зря кстати отказались от управления по snmp
Тем более net-snmp нормально работает с qt вопрос на засыпку что проще в плане реализации Выключение 5 порта и запись конфигурации по телнету Цитировать telnet 10.200.1.3 илиTrying 10.200.1.3... Connected to 10.200.1.3. Escape character is '^]'. User name: admin Password: ******* Copyright (c) 1994 - 2009 ZyXEL Communications Corp. sw_15_31# configure sw_15_31(config)# interface port-channel 5 sw_15_31(config-interface)# inactive sw_15_31(config-interface)# exit sw_15_31(config)# exit sw_15_31# write memory sw_15_31# exit Connection closed by foreign host тоже самое но через snmp Цитировать [root@s2 oath]# snmpset -O a -c 1234567890 -v 2c 10.200.1.3 1.3.6.1.2.1.2.2.1.7.5 i 2 IF-MIB::ifAdminStatus.5 = INTEGER: down(2) [root@s2 oath]# snmpset -O a -c 1234567890 -v 2c 10.200.1.3 1.3.6.1.4.1.890.1.5.8.18.9.1.0 i 1 По протоколу snmp устройство отдает ответ , если значение совпадает с тем что отправляли , значит все ок. Цитировать Самое важное - по snmp не все можно настроить. По snmp, из того с чем сталкивался в zyxel,нельзя сменить только пароль.Что конкретно не получилось у Вас настроить в них по snmp? Название: Re: написать прогу управления "умными свичами" Отправлено: Bepec от Июль 28, 2012, 19:40 Некромант oath, не стоит будить зомби тему :D
PS все протоколы хороши, но выбор уже произошёл :D |