Демонстрация работы с trap сигналами на примере ОС Ubuntu
snmp
sudo apt install snmp
snmpd
sudo apt install snmpd
snmptrad
sudo apt install snmptrapd
snmpd.service
sudo systemctl stop snmpd.service
snmptrapd.socket
sudo systemctl stop snmptrapd.socket
В конфигурационном файле /etc/snmp/snmptrapd.conf нужно добавить строки
authCommunity log,execute,net public
noAuthNoPriv
createUser -e 0x0102030405 user1
authUser log,execute user1 noauth
authNoPriv
createUser -e 0x0203040506 user2 SHA authPass123
authUser log,execute user2
authPriv
createUser -e 0x0304050607 user3 SHA authPass123 AES privPass123
authUser log,execute user3
sudo snmptrapd -Dusm -f -L o
-D - запуск с выводом всей отладочной информации
-Dusm - запуск с выводом информации об авторизации пользователя
В новом терминале проверяем статус и конфигурацию smpd
sudo netstat -nlup | grep 162
Ожидаемый вывод
udp 0 0 0.0.0.0:162 0.0.0.0:* 4784/snmptrapd
В новом терминале отправляем тестовый сигнал на себя
sudo snmptrap -c public -v 2c 127.0.0.1 "" 1.3.3.3.3.3.3.3 1.2.2.2.2.2.2 s "v2c TRAP"
noAuthNoPriv
snmptrap -e 0x0102030405 -v 3 -u user1 -l noAuthNoPriv 127.0.0.1 "" 1.3.3.3.3.3.3.3 1.2.2.2.2.2.2 s "v3 noAuthNoPriv TRAP"
authNoPriv
snmptrap -e 0x0203040506 -v 3 -u user2 -a SHA -A authPass123 -l authNoPriv 127.0.0.1 "" 1.3.3.3.3.3.3.3 1.2.2.2.2.2.2 s "v3 authNoPriv TRAP"
authPriv
snmptrap -e 0x0304050607 -v 3 -u user3 -a SHA -A authPass123 -x AES -X privPass123 -l authPriv 127.0.0.1 "" 1.3.3.3.3.3.3.3 1.2.2.2.2.2.2 s "v3 authPriv TRAP"
В терминале с запущенным snmptrapd подтверждаем получение сигнала.
g++ main.cpp snmp.cpp -L/usr/local/lib -lnetsnmp