Agent SNMP: различия между версиями

Материал из Wiren Board
(не показано 5 промежуточных версий 1 участника)
Строка 10: Строка 10:
Обновите источники и установите пакеты <code>snmp</code> и <code>snmpd</code>:
Обновите источники и установите пакеты <code>snmp</code> и <code>snmpd</code>:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt update && apt -y install snmp snmpd
apt update && apt-get install snmp snmpd -y
</syntaxhighlight>
</syntaxhighlight>


Строка 18: Строка 18:
</syntaxhighlight>
</syntaxhighlight>


# Чтобы разрешить запросы со всех IP-адресов, закомментируйте строку: <syntaxhighlight lang="bash"># agentaddress  127.0.0.1,[::1]</syntaxhighlight>
В раздел <code># SECTION: Access Control Setup</code> допишите строчки:
# В раздел <code># SECTION: Access Control Setup</code> допишите строчки: <syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
view  systemonly  included  .1.3.6.1.4.1.2021.8
view  systemonly  included  .1.3.6.1.4.1.2021.8
view  systemonly  included  .1.3.6.1.4.1.2021.9
view  systemonly  included  .1.3.6.1.4.1.2021.9
</syntaxhighlight>
</syntaxhighlight>
# В конец файла допишите ссылки на скрипты: <syntaxhighlight lang="bash">
 
А в конец файла допишите ссылки на скрипты:
<syntaxhighlight lang="bash">
extend .1.3.6.1.4.1.2021.8 tt /var/lib/snmp/mqtt-snmp.sh
extend .1.3.6.1.4.1.2021.8 tt /var/lib/snmp/mqtt-snmp.sh
pass  .1.3.6.1.4.1.2021.9 /var/lib/snmp/mqtt-snmp_pass.sh
pass  .1.3.6.1.4.1.2021.9 /var/lib/snmp/mqtt-snmp_pass.sh
Строка 32: Строка 34:
== Добавление скрипта ==
== Добавление скрипта ==


В [[Wiren_Board_Software | релизе]] wb-2304 и более новых сервис snmpd запускается от имени пользователя "Debian-snmp". Требуется коррекция прав:
В [[Wiren_Board_Firmware_Update | релизе]] wb-2304 и более новых сервис snmpd запускается от имени пользователя "Debian-snmp". Требуется коррекция прав:


<code>echo 'Debian-snmp ALL=(ALL) NOPASSWD: /usr/bin/mosquitto_sub' > /etc/sudoers.d/snmpd</code>
<code>echo 'Debian-snmp ALL=(ALL) NOPASSWD: /usr/bin/mosquitto_sub' > /etc/sudoers.d/snmpd</code>
Строка 45: Строка 47:
#!/bin/sh
#!/bin/sh
echo "mosquitto topics"
echo "mosquitto topics"
sudo mosquitto_sub -C 1 -t "/devices/wb-adc/controls/Vin"
# voltage Vout
echo $(/usr/bin/mosquitto_sub -C 1 -t "/devices/wb-adc/controls/5Vout" 2>/dev/null)
# voltage Vin
echo $(/usr/bin/mosquitto_sub -C 1 -t "/devices/wb-adc/controls/Vin" 2>/dev/null)
</syntaxhighlight>
</syntaxhighlight>
OID'ы отдаваемые этим скриптом могут иметь тип только ''STRING''
OID'ы отдаваемые этим скриптом могут иметь тип только ''STRING''
Строка 65: Строка 70:
Установите права:
Установите права:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
chmod a+rx /var/lib/snmp/mqtt-snmp.sh /var/lib/snmp/mqtt-snmp_pass.sh
chmod a+rx /var/lib/snmp/mqtt-snmp.sh
chmod a+rx /var/lib/snmp/mqtt-snmp_pass.sh
</syntaxhighlight>
</syntaxhighlight>


Строка 77: Строка 83:
Можно протестировать:
Можно протестировать:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
snmpwalk -On -c public -v 2c 127.0.0.1 1.3.6.1.4.1.2021.8.4
snmpwalk -On -v2c -c public 127.0.0.1 1.3.6.1.4.1.2021.8.4
snmpwalk -On -c public -v 2c 127.0.0.1 1.3.6.1.4.1.2021.9
</syntaxhighlight>
и второй:
<syntaxhighlight lang="bash">
snmpwalk -On -v2c -c public 127.0.0.1 1.3.6.1.4.1.2021.9
</syntaxhighlight>
</syntaxhighlight>
Параметры:
* -On включает числовой вывод, т.е. отключает трансляцию OIDов в имена из MIBа.
* -c задаёт community string,
* -v задаёт версию протокола SNMPv2c.

Версия 17:39, 21 сентября 2023

Контроллер как источник SNMP

Иногда нужно получать какие-то параметры из контроллера по SNMP, например, значения топиков. Для реализации требуется установить и настроить на контроллере агента SNMP.

Решение базируется на демоне snmpd, который разрабатывается и поддерживается открытым сообществом. Здесь даны общие рекомендации, подробную информацию ищите в официальной документации (англ). Перед началом установки убедитесь что правильно и полностью понимаете содержимое документации https://manpages.debian.org/unstable/snmpd/snmpd.conf.5.en.html

Установка и предварительная настройка пакетов

Обновите источники и установите пакеты snmp и snmpd:

apt update && apt-get install snmp snmpd -y

Отредактируйте основной файл конфигурации демона:

nano /etc/snmp/snmpd.conf

В раздел # SECTION: Access Control Setup допишите строчки:

view   systemonly  included   .1.3.6.1.4.1.2021.8
view   systemonly  included   .1.3.6.1.4.1.2021.9

А в конец файла допишите ссылки на скрипты:

extend .1.3.6.1.4.1.2021.8 tt /var/lib/snmp/mqtt-snmp.sh
pass  .1.3.6.1.4.1.2021.9 /var/lib/snmp/mqtt-snmp_pass.sh

Дополнительную информацио о параметрах конфигурационного файла можно в документации snmpd

Добавление скрипта

В релизе wb-2304 и более новых сервис snmpd запускается от имени пользователя "Debian-snmp". Требуется коррекция прав:

echo 'Debian-snmp ALL=(ALL) NOPASSWD: /usr/bin/mosquitto_sub' > /etc/sudoers.d/snmpd

Отредактируйте скрипт /var/lib/snmp/mqtt-snmp.sh

nano /var/lib/snmp/mqtt-snmp.sh

И приведите его к виду:

#!/bin/sh
echo "mosquitto topics"
# voltage Vout
echo $(/usr/bin/mosquitto_sub -C 1 -t "/devices/wb-adc/controls/5Vout" 2>/dev/null)
# voltage Vin
echo $(/usr/bin/mosquitto_sub -C 1 -t "/devices/wb-adc/controls/Vin" 2>/dev/null)

OID'ы отдаваемые этим скриптом могут иметь тип только STRING

Для демонстрации вывода других типов служит второй:

nano /var/lib/snmp/mqtt-snmp_pass.sh

Содержимое:

#!/bin/sh -f

echo .1.3.6.1.4.1.2021.9.1
echo integer
/bin/systemctl is-active wb-mqtt-serial > /dev/null && echo 1 || echo 0

Скрипт возвращает INTEGER:1 если сервис wb-mqtt-serial запущен и 0 если нет.

Установите права:

chmod a+rx /var/lib/snmp/mqtt-snmp.sh
chmod a+rx /var/lib/snmp/mqtt-snmp_pass.sh

Теперь добавляем в этот скрипт нужные топики, или создаем несколько скриптов с разными наборами. Если вы создаете несколько скриптов, не забудьте дописать ссылки на них в конец файла /etc/snmp/snmpd.conf.

После сохранения изменений в скрипте, перезапустите демон snmpd:

systemctl restart snmpd && systemctl status snmpd

Можно протестировать:

snmpwalk -On -v2c -c public 127.0.0.1 1.3.6.1.4.1.2021.8.4

и второй:

snmpwalk -On -v2c -c public 127.0.0.1 1.3.6.1.4.1.2021.9