Не видит скрипт SNMP

Добрый день. Сделал конфигурацию по инструкции, изменив OID: Агент SNMP — Wiren Board
После рестарта сервиса команда systemctl status snmpd выдает следующее:

А при попытке работы с snmpwalk следующее:


При том, что физически этот файл существует
Конфигурация:
snmpd.conf (3,2 КБ)
Файл скрипта:
mqtt-snmp.sh (1,5 КБ)

Здравствуйте.

Пока решаем ваш вопрос, прошу дополнительно обновить ПО на устройстве, а также приложить диагностический архив. Создание архива описано в документации.

Покажите вывод

ls -l /var/lib/snmp/mqtt-snmp.sh

image

приложен диагностический архив, доступен только сотрудникам поддержки
(151,0 КБ)

Я вижу что скрипт у вас никак не обрабатывает отсутствие топика.
Существует ли на контроллере топик /devices/wb-adc/controls/5Vout?
Какое время занимает выполнение скрипта и чсто при его выполнении выводится?


Топика 5Vout не было, но ситуацию вообще не поменяло

Если нужно, могу anydesk дать

Привел к виду:

#!/bin/sh
echo "mosquitto topics"
# voltage Vout
# voltage Vin
#echo $(/usr/bin/mosquitto_sub -C 1 -t "/devices/wb-adc/controls/Vin" 2>/dev/null)
# aboba
echo 111
echo 222
echo 333
echo 444
echo 555
echo 666
echo 777
echo 888
echo 999
echo 000
echo 011
echo 022
echo 033
echo 044
echo 055
echo 066
echo 077
echo 088

Обратите внимание, echo в вашем варианте выводит не ожидаемую челое а число дробное.

Получаю при выполнении:

snmpwalk -On -v2c -c public 127.0.0.1 1.3.6.1.4.1.65535.1.2
.1.3.6.1.4.1.65535.1.2.1.0 = INTEGER: 1
.1.3.6.1.4.1.65535.1.2.2.1.2.2.116.116 = STRING: "/var/lib/snmp/mqtt-snmp.sh"
.1.3.6.1.4.1.65535.1.2.2.1.3.2.116.116 = ""
.1.3.6.1.4.1.65535.1.2.2.1.4.2.116.116 = ""
.1.3.6.1.4.1.65535.1.2.2.1.5.2.116.116 = INTEGER: 5
.1.3.6.1.4.1.65535.1.2.2.1.6.2.116.116 = INTEGER: 1
.1.3.6.1.4.1.65535.1.2.2.1.7.2.116.116 = INTEGER: 1
.1.3.6.1.4.1.65535.1.2.2.1.20.2.116.116 = INTEGER: 4
.1.3.6.1.4.1.65535.1.2.2.1.21.2.116.116 = INTEGER: 1
.1.3.6.1.4.1.65535.1.2.3.1.1.2.116.116 = STRING: "mosquitto topics"
.1.3.6.1.4.1.65535.1.2.3.1.2.2.116.116 = STRING: "mosquitto topics

111
222
333
444
555
666
777
888
999
000
011
022
033
044
055
066
077
088"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.1 = STRING: "mosquitto topics"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.2 = ""
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.3 = STRING: "111"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.4 = STRING: "222"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.5 = STRING: "333"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.6 = STRING: "444"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.7 = STRING: "555"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.8 = STRING: "666"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.9 = STRING: "777"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.10 = STRING: "888"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.11 = STRING: "999"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.12 = STRING: "000"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.13 = STRING: "011"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.14 = STRING: "022"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.15 = STRING: "033"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.16 = STRING: "044"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.17 = STRING: "055"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.18 = STRING: "066"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.19 = STRING: "077"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.20 = STRING: "088"
.1.3.6.1.4.1.65535.1.2.4.1.2.2.116.116.20 = No more variables left in this MIB View (It is past the end of the MIB tree)

Меняю на


Возможно, у меня не отобразилась часть вашего последнего сообщения, но скопировав этот скрипт и полностью перезагрузив устройство, получил ту же ошибку

Что при этом в логе snmp?
Проверьте пожалуйста какой байт (комбинация байт) используется для разделения строк.
Вот мой тестовый файл:

mqtt-snmp.sh (196 байтов)
Проверьте с ним не редактируя.

Не смотрел. Проблема решилась тем, что я переустановил snmpd и заново сконфигурировал. Но тогда появилась проблема с пустыми строками. То есть делая по образу и подобию документации, у меня ничего не получилось. Убрав dev/null в конце, получил permission denied. В итоге дошел до такого вида скрипта:

#!/bin/sh
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN1")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN2")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN3")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN4")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN5")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN6")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN7")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN8")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN9")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN10")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN11")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN12")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN13")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT1_IN14")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN1")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN2")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN3")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN4")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN5")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN6")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN7")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN8")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN9")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN10")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN11")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN12")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN13")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT2_IN14")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT3_IN1")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT3_IN2")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT3_IN3")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT3_IN4")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT3_IN5")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT3_IN6")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT3_IN9")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT3_IN10")
echo $(sudo -S /usr/bin/mosquitto_sub -C 1 -t "/devices/wb-gpio/controls/EXT3_IN11")

Также добавил пользователя Debian-sn в souders. Но после успешного завершения этого действия столкнулся с другой проблемой: этот скрипт ужасно медленно работает, даже на вид, смысла запускать time нет. Если больше 10 строчек, snmpd вываливается в таймаут. Есть вариант его оптимизировать?

Какая? Хочу заметить что используемый метод extend как понятно из его описания отправляет весь stdout
Поэтому - надо его форматировать, естественно.

А зачем? А контексте другого пользователя разве не запускается?

Гораздо продуктивнее - использовать pass.
Ну и для мониторинга - оптимальнее всего zabbix agent 2, он нативно работает с mqtt.

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.