[英]snmp-get value from pass is missing
我想通過snmp讀取RaspberryPi的GPIO引腳。 我用python編寫了一個腳本來讀取圖釘。 為了進行測試,我提供了值17和99。
/usr/local/bin/snmp-gpio17.py
:
#!/usr/bin/python3 -u
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)
if not GPIO.input(17):
var=17
else:
var=99
print ( var )
該腳本由/usr/local/bin/snmp-gpio17.sh
調用:
#!/bin/bash
if [ "$1" = "-g" ]
then
echo .1.3.6.1.4.1.18565.1.12.101.1.17
echo gauge
python /usr/local/bin/snmp-gpio17.py
fi
exit 0
在/etc/snmp/snmpd.conf
,我添加了這一行
pass .1.3.6.1.4.1.18565.1.12.101.1.17 /bin/sh /usr/local/bin/snmp-gpio17.sh
當我在RasPi上運行腳本時,它可以工作:
root@raspberrypi:~# /usr/local/bin/snmp-gpio17.sh -g
.1.3.6.1.4.1.18565.1.12.101.1.17
gauge
17
但是當我嘗試讀取OID(本地或通過網絡)時,我得到了:
karls@mintbox ~ $ snmpget -v1 -c public 192.168.129.4 .1.3.6.1.4.1.18565.1.12.101.1.17
iso.3.6.1.4.1.18565.1.12.101.1.17 = Gauge32: 0
我還通過另一條通過線通過snmp設置了CPU溫度的測量,並且工作正常。 我使用幾乎相同的腳本:
#!/bin/bash
if [ "$1" = "-g" ]
then
echo .1.3.6.1.4.1.18565.1.12.101.1.101
echo gauge
cat /sys/class/thermal/thermal_zone0/temp
fi
exit 0
因此snmp通訊似乎還可以(我將答案與wireshark進行了比較),但是RasPi上的snmpd從bash腳本中獲取了錯誤的信息。
有人有主意嗎?
問候,卡爾
[解決]現在就可以使用,即使我從組gpio中刪除了用戶snmp。 我在測試中遇到的問題是,我沒有在兩次測試之間等待。 我發現,RasPi上的snmpd將獲取結果緩存30秒。 只有等待了這么長時間,您才能獲得新的結果! 謝謝大家
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.