ALEX_SE Posted December 31, 2020 Posted December 31, 2020 Добрый день! Есть софт. Который при наступлении тех или иных событий может выполнить HTTP-запрос. Ну либо выполнить команду ОС (запустить командный файл например), но второе не так интересно. Есть железо. Которое может выполнять те или иные действия согласно командам по SNMP. Хотелка - иметь какой-то софт который получив http-запрос выполнит ту или иную команду по snmp. Может какой-то софт мониторинга или управления с набортным web-сервером УЖЕ имеет такой функционал? Кто сталкивался? Вставить ник Quote
pr0lan Posted December 31, 2020 Posted December 31, 2020 Волшебных кнопок - особо нет, у меня тазик ловит трапы, а самопис на питоне - обрабатывает. Возможно сделать все. Биллинг - тоже самопис. Вставить ник Quote
ALEX_SE Posted December 31, 2020 Author Posted December 31, 2020 Мне не надо ловить трапы как таковые. Мне надо просто получить (по http) какой-то запрос и исходя из его содержимого выполнить ту или иную команду через тот же net-snmp. почему не хочется пользовать скрипты или командные файлы - да что бы не привязываться к локальным ресурсам хоста который дает запросы, он не один. Конечно вариант с самописным рассматриваю но кто знает может уже что-то есть. надо еще посмотреть на OPC или платформы интеграционные. Но те хороших денежек стоят :)) Вставить ник Quote
pppoetest Posted December 31, 2020 Posted December 31, 2020 1 час назад, ALEX_SE сказал: Конечно вариант с самописным рассматриваю Самый простой, быстрый и рабочий способ. Вставить ник Quote
ALEX_SE Posted December 31, 2020 Author Posted December 31, 2020 И гибкий. Не спорю. Но на это нет времени. Точнее есть более приоритетные задачи. Потому и спросил может есть что готовое в системах мониторинга или управления - что бы эти системы можно было не только для данной задачи использовать :) Вставить ник Quote
sdy_moscow Posted December 31, 2020 Posted December 31, 2020 В php есть готовые библиотеки поддержки SNMP с внятными примерами. Поднять где-то веб сервер с пхп тоже не проблема. Думаю это будет самый простой способ. Вставить ник Quote
pppoetest Posted December 31, 2020 Posted December 31, 2020 2 часа назад, ALEX_SE сказал: Но на это нет времени. Там дел на часа 2-3 и это с кофем и перекурами. Вот вам простой вебсервер с обработкой запросов вида http://localhost:8081/snmp1 и выполнения снмп #!/usr/bin/perl { package SimpleWebServer; use HTTP::Server::Simple::CGI; use base qw(HTTP::Server::Simple::CGI); my %dispatch = ( '/snmp1' => \&snmp1, # ... ); sub handle_request { my $self = shift; my $cgi = shift; my $handler = $dispatch{$cgi->path_info()}; if (ref($handler) eq "CODE") { print "HTTP/1.0 200 OK\r\n"; $handler->($cgi); } else { print "HTTP/1.0 404 Not found\r\n"; print $cgi->header, $cgi->start_html, $cgi->h1('Not found'), $cgi->end_html; } } sub snmp1 { my $cgi = shift; # CGI.pm object return if !ref $cgi; system ("snmpset -v2c -c public 192.168.1.1 .1.3.6.X.X.X.X i 1"); print $cgi->header, $cgi->start_html, $cgi->h1("snmp1 command execute"), $cgi->end_html; } }; my $pid = SimpleWebServer->new(8081)->background(); print "Use 'kill $pid' to stop server.\n"; Вставить ник Quote
ALEX_SE Posted December 31, 2020 Author Posted December 31, 2020 Хороший вариант спасибо :) Вставить ник Quote
YuryD Posted January 1, 2021 Posted January 1, 2021 10 часов назад, ALEX_SE сказал: Хороший вариант спасибо :) Не слишком, небезопасный совершенно, судя по system ("snmpset -v2c -c public 192.168.1.1 .1.3.6.X.X.X.X i 1"); Вставить ник Quote
ALEX_SE Posted January 1, 2021 Author Posted January 1, 2021 Это же пример, понятно что в моем случае при использовании например snmp v3 запрос будет другим :) Но за предостережение спасибо. Об этом я знаю :) Вставить ник Quote
YuryD Posted January 2, 2021 Posted January 2, 2021 Я не о том, что и как сетить :) Я о вызове system какой-то утилиты вне окружения, и без указания абсолютного пути к ней. Подменить такой вызов своей утилитой как 2 пальца об забор :) Нее, я не против, сам так делаю но с полным контролем, просто может кто из программистов еще не в курсе этих граблей :) Вставить ник Quote
lugoblin Posted January 2, 2021 Posted January 2, 2021 On 12/31/2020 at 5:08 AM, ALEX_SE said: может выполнить HTTP-запрос. Ну либо выполнить команду ОС Зачем вам HTTP, если это всё равно обёртка вокруг system ("snmpset ? Запускайте сразу snmpset. Если HTTP принципиально, но хочется уменьшить зависимости: Можно сразу шелл скрипт запускать как CGI, без прослойки интерпретатора PHP. Можно полноценный HTTP сервер тоже убрать, и запускать это дело из xinetd, да, по запросу по HTTP. Вставить ник Quote
ALEX_SE Posted January 3, 2021 Author Posted January 3, 2021 Это не очень удобно с точки зрения возможностей ведового софта который и будет давать команды на управление (ему проще выполнить хттп-запрос) кроме того хостов таких несколько. Которые дают команды. А управлять хочется с одного. Вставить ник Quote
lugoblin Posted January 4, 2021 Posted January 4, 2021 On 1/2/2021 at 10:35 PM, ALEX_SE said: Это не очень удобно с точки зрения возможностей ведового софта который и будет давать команды на управление (ему проще выполнить хттп-запрос) кроме того хостов таких несколько. Которые дают команды. А управлять хочется с одного. Резон. Вставить ник Quote
ixi Posted January 18, 2021 Posted January 18, 2021 Фреймворк для микросервисов на вашем любимом языке. Из коробки масштабирование, HTTP gateway, аутентификация, мониторинг и прочее. Вставить ник Quote
ALEX_SE Posted January 20, 2021 Author Posted January 20, 2021 То же вариант :) Кстати тем же заббиксом это то же можно сделать. http-агент умеет принимать трапы по http а дальше необходимое действие уже штатно выполняется по action как и при обычном мониторинге. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.