gpt4 book ai didi

python - snmp-从 pass 获取值丢失

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:00 25 4
gpt4 key购买 nike

我想通过 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 会将 get 的结果缓存 30 秒。只有等那么久,你才会得到新的结果!感谢大家

关于python - snmp-从 pass 获取值丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35705372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com