Генерация SNMP-ловушек с помощью PHP - PullRequest
5 голосов
/ 30 сентября 2010

Я отчаянно ищу способ генерировать SNMP-ловушки из PHP. Я знаю встроенные методы для использования snmpget, но я не смог понять, как отправлять SNMP-ловушки.

Кто-нибудь знает фрагмент кода / кода для него? Поиск в Интернете не вызывал ничего, кроме использования exec для вызова инструментов cli, что для меня определенно не вариант.

Я подозреваю, что было бы необходимо использовать socket_create и соответствующие функции для генерации пакета UDP вручную ...

Ответы [ 4 ]

6 голосов
/ 07 октября 2010

Насколько я знаю, нет никакого собственного способа генерирования ловушек / сообщений с помощью php.Даже расширение SNMP позволяет только получать и устанавливать запросы.Поэтому единственный (быстрый) способ сделать это - вызвать внешний инструмент, такой как net-snmp.Правильная командная строка будет выглядеть примерно так:

snmptrap -v 1 -c public manager enterprises.spider test-hub 3 0 '' interfaces.iftable.ifentry.ifindex.1 i 1

отправит универсальную ловушку linkUp менеджеру, для интерфейса 1 (взято из manpage ).Чтобы выполнить это из php, двоичные файлы net-snmp должны находиться на пути к системе, и вы можете либо вызвать exec , shell_exec или proc_open .

Очевидно, что вы также можете отправлять ловушку самостоятельно, кодируя ее в виде необработанного байтового массива и отправляя ее через сокет UDP, но затем вам пришлось самостоятельно реализовать кодер BER и пакетный кодер SNMP, что я не рекомендую,Для справки вам понадобятся следующие данные:

3 голосов
/ 07 декабря 2011

Нет основных библиотек SNMP-ловушек.Или даже любые основные библиотеки, которые помогут вам упаковать пакет SNMP udp.Однако я нашел этот заброшенный проект.http://code.google.com/p/php-snmp/, который предоставляет большую часть того, что вам нужно для отправки простой ловушки.

Немного более активным, но гораздо более сложным кажется http://www.activexperts.com/network-component/howto/snmpts/php/

1 голос
/ 25 июня 2019

Для тех, кто ищет такую ​​библиотеку в эти дни (в 2019 году), я нашел https://github.com/FreeDSx/SNMP, который поддерживает отправку прерываний SNMPv1 и SNMPv2 (включая запросы на получение информации).

0 голосов
/ 28 февраля 2017

Я знаю, что этот вопрос старый, но я только что натолкнулся на него через Google и подумал обновить его в соответствии с моими выводами на случай, если кто-то еще также попадет сюда.Как ответил Джек, использование net-snmp является лучшим решением.Хотя в первоначальном сообщении говорилось, что он не хочет использовать какие-либо внешние компоненты, учтите, что теперь вы можете добавить net-snmp через apt-get (посмотрите пакет php-snmp) для многих дистрибутивов Linux, и я уверен, что установка на Windowsбудет одинаково легко.Большим преимуществом его использования является то, что в PHP 5.3.3 PHP имеет встроенные интерфейсные функции для использования SNMP, поэтому вам не нужно использовать exec, shell_exec или proc_open.Все может быть сделано в среде PHP.Смотри http://php.net/manual/en/book.snmp.php

...