Добрый день. Понадобилось получать события snmp trap от сетевого устройства. В описании Драйвер SNMP — Wiren Board про trap информации не нашел. Может есть другой способ в правилах обработать оповещения snmp trap?
Добрый день.
В текущей версии драйвера обработка SNMP trap (асинхронных) не реализована.
Но, реализовать можно, навскидку вот так:
snmpd поддерживает обработку trap-сообщений через сценарии. Можно настроить выполнение скриптов на стороне приемника для автоматической реакции на определенные типы тревог.
Например, добавить сценарий в
/etc/snmp/snmptrapd.conf
C содержимым
traphandle .1.3.6.1.4.1.2021.101 /bin/smnptrap1.sh
Ну и сам скрипт, например
#!/bin/bash
# Имя узла, отправившего trap
NODE=$1
# Время отправления trap
TIME=$2
# Тип trap (формат varbindings)
TYPE=$3
# Дополнительные параметры varbindings
shift 3
# Проходим по остальным параметрам
for VARBINDING in "$@"; do
echo "VarBinding: ${VARBINDING}"
done
echo "Получено trap от ${NODE}, время ${TIME}, тип ${TYPE}"
exit 0
Аналогично как Агент SNMP — Wiren Board
Только поменять echo на публикацию в mqtt топики.
Я не проверял подобное, но должно работать.
Большое спасибо !
Добавил в /etc/snmp/snmptrapd.conf строку
traphandle default /root/snmp_trap_rule.sh
и в скрипте добавил вывод в файл
#!/bin/bash
# Имя узла, отправившего trap
NODE=$1
# Время отправления trap
TIME=$2
# Тип trap (формат varbindings)
TYPE=$3
echo "Получено trap от ${NODE}, время ${TIME}, тип ${TYPE}" >> snmp_trap.log
# Дополнительные параметры varbindings
shift 3
# Проходим по остальным параметрам
for VARBINDING in "$@"; do
echo "nVarBinding: ${VARBINDING}" >> snmp_trap.log
done
Работает, но приходят пустые строки - “Получено trap от , время тип”
Получается, что в скрипт параметры не передаются?
Проверьте
traphandle default /bin/bash /root/snmp_trap_rule.sh
Подозреваю что шебанг не отрабатывает. Хотя, маловероятно.
И, увидел вот тут - предположил что значения в stdin процесса передаются.
Добавление /bin/bash картину не изменило, а Скрипт работает как надо. Спасибо !
Ну, отлично.
Значит я не так изначально понял документацию.