Re: NULL result with net-snmp-5.9.4_1,1

From: Budi Janto <budijanto_at_studiokaraoke.co.id>
Date: Mon, 03 Jun 2024 00:09:55 UTC
On 6/3/24 06:18, Mark Johnston wrote:
> I guess this is with net-snmp-5.9.4_2,1?

Yes, already upgrade before.
# pkg info | grep snmp
net-snmp-5.9.4_2,1             Extendable SNMP implementation

root@BEC-DB-P1:~ # pkg info net-snmp-5.9.4_2,1 | head -n 10
net-snmp-5.9.4_2,1
Name           : net-snmp
Version        : 5.9.4_2,1
Installed on   : Sun May 26 13:10:50 2024 WIB
Origin         : net-mgmt/net-snmp
Architecture   : FreeBSD:14:amd64
Prefix         : /usr/local
Categories     : net-mgmt
Licenses       : BSD3CLAUSE
Maintainer     : zi@FreeBSD.org

> This script does not need to run as root.  If you change snmpd.conf to:
> 
>    extend  cpu-temperature sh /root/x/snmp-cpu-temperature.sh
> 
> and set snmpd_sugid="YES" in rc.conf (to make snmpd drop privileges) and
> restart snmpd, are you able to see the temperatures again?

# grep snmpd /etc/rc.conf
snmpd_enable="YES"
snmpd_conffile="/usr/local/etc/snmpd.conf"
snmpd_sugid="YES"

# grep extend /usr/local/etc/snmpd.conf
extend  cpu-temperature /root/x/snmp-cpu-temperature.sh

# ps axu | grep snmp
snmpd   61102    0.0  0.1   34560   21756  -  S    06:52       0:00.00 
/usr/local/sbin/snmpd -p /var/run/net_snmpd.pid -u snmpd -g snmpd -c /
root    61104    0.0  0.0   12876    2428  0  S+   06:52       0:00.00 
grep snmp

# snmpwalk -v2c -c public localhost . | grep 'cpu-temperature'
HOST-RESOURCES-MIB::hrSWRunParameters.61123 = STRING: 
"NET-SNMP-EXTEND-MIB::nsExtendOutLine.\"cpu-temperature\""
NET-SNMP-EXTEND-MIB::nsExtendCommand."cpu-temperature" = STRING: 
/root/x/snmp-cpu-temperature.sh
NET-SNMP-EXTEND-MIB::nsExtendArgs."cpu-temperature" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendInput."cpu-temperature" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendCacheTime."cpu-temperature" = INTEGER: 5
NET-SNMP-EXTEND-MIB::nsExtendExecType."cpu-temperature" = INTEGER: exec(1)
NET-SNMP-EXTEND-MIB::nsExtendRunType."cpu-temperature" = INTEGER: 
run-on-read(1)
NET-SNMP-EXTEND-MIB::nsExtendStorage."cpu-temperature" = INTEGER: 
permanent(4)
NET-SNMP-EXTEND-MIB::nsExtendStatus."cpu-temperature" = INTEGER: active(1)
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cpu-temperature" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."cpu-temperature" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."cpu-temperature" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."cpu-temperature" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".1 = STRING:

NULL results for 'NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature"'.

This problem looks like about path permission file (Default /root 
permission directory (drwxr-x---)), I moved script file to 
/usr/local/bin/snmp-cpu-temperature.sh and give chmod 755, then change 
snmpd configuration to 'extend  cpu-temperature 
/usr/local/bin/snmp-cpu-temperature.sh'

# ps axu | grep snmp
snmpd   61160    0.0  0.1   34560   21732  -  S    06:59       0:00.01 
/usr/local/sbin/snmpd -p /var/run/net_snmpd.pid -u snmpd -g snmpd -c /
root    61162    0.0  0.0   12876    2432  0  S+   06:59       0:00.00 
grep snmp

# snmpwalk -v2c -c public localhost . | grep 'cpu-temperature'
HOST-RESOURCES-MIB::hrSWRunParameters.61201 = STRING: "cpu-temperature"
NET-SNMP-EXTEND-MIB::nsExtendCommand."cpu-temperature" = STRING: 
/usr/local/bin/snmp-cpu-temperature.sh
NET-SNMP-EXTEND-MIB::nsExtendArgs."cpu-temperature" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendInput."cpu-temperature" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendCacheTime."cpu-temperature" = INTEGER: 5
NET-SNMP-EXTEND-MIB::nsExtendExecType."cpu-temperature" = INTEGER: exec(1)
NET-SNMP-EXTEND-MIB::nsExtendRunType."cpu-temperature" = INTEGER: 
run-on-read(1)
NET-SNMP-EXTEND-MIB::nsExtendStorage."cpu-temperature" = INTEGER: 
permanent(4)
NET-SNMP-EXTEND-MIB::nsExtendStatus."cpu-temperature" = INTEGER: active(1)
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cpu-temperature" = STRING: 30.0
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."cpu-temperature" = STRING: 30.0
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."cpu-temperature" = INTEGER: 12
NET-SNMP-EXTEND-MIB::nsExtendResult."cpu-temperature" = INTEGER: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".1 = STRING: 30.0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".2 = STRING: 31.0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".3 = STRING: 32.0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".4 = STRING: 32.0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".5 = STRING: 33.0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".6 = STRING: 33.0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".7 = STRING: 32.0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".8 = STRING: 31.0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".9 = STRING: 34.0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".10 = STRING: 34.0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".11 = STRING: 33.0
NET-SNMP-EXTEND-MIB::nsExtendOutLine."cpu-temperature".12 = STRING: 32.0

Now, everything work as usually. Thanks for your help.

-- 
Regards,
Budi Janto