簡體   English   中英

通過傳遞從snmp-get值丟失

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM