我正在尝试将freeradius统计信息扩展到snmp。我想监视这些值并在rrd文件中收集它们。 我的问题是这些值应该是rrd计数器,但似乎需要检索计数器值 INTEGER而不是STRING。您可以在此snmpwalk中看到该值以STRING形式返回。
snmpwalk -v2c -c public 127.0.0.1 .1.3.6.1.3.1983.1.1
# output
iso.3.6.1.3.1983.1.1.1.0 = INTEGER: 1
iso.3.6.1.3.1983.1.1.2.1.2.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115 = STRING: "/bin/cat"
iso.3.6.1.3.1983.1.1.2.1.3.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115 = STRING: "/var/log/freeradius/statistics/total_access_requests"
iso.3.6.1.3.1983.1.1.2.1.4.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115 = ""
iso.3.6.1.3.1983.1.1.2.1.5.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115 = INTEGER: 5
iso.3.6.1.3.1983.1.1.2.1.6.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115 = INTEGER: 1
iso.3.6.1.3.1983.1.1.2.1.7.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115 = INTEGER: 1
iso.3.6.1.3.1983.1.1.2.1.20.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115 = INTEGER: 4
iso.3.6.1.3.1983.1.1.2.1.21.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115 = INTEGER: 1
iso.3.6.1.3.1983.1.1.3.1.1.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115 = STRING: "9566"
iso.3.6.1.3.1983.1.1.3.1.2.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115 = STRING: "9566"
iso.3.6.1.3.1983.1.1.3.1.3.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115 = INTEGER: 1
iso.3.6.1.3.1983.1.1.3.1.4.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115 = INTEGER: 0
iso.3.6.1.3.1983.1.1.4.1.2.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115.1 = STRING: "9566"
# /etc/snmp/snmpd.conf
extend .1.3.6.1.3.1983.1.1 access_requests /bin/cat /var/log/freeradius/statistics/total_access_requests
通过在文件中打印值来扩展snmp脚本。 / bin / cat 使用的文件由脚本 /usr/local/sbin/radstat.sh
生成如何使此输出成为INTEGER?
iso.3.6.1.3.1983.1.1.4.1.2.15.97.99.99.101.115.115.95.114.101.113.117.101.115.116.115.1 = STRING: "9566"
由于 多米尼克
答案 0 :(得分:1)
您可能需要使用传递而不是 extend ,以便您的脚本可以指定返回的类型。来自man snmpd.conf:
传递[-p priority] MIBOID PROG 将根据MIBOID的子树的控制权传递给指定的PROG命令。此树中的OET和GETNEXT请求将触发此命令,称为:
PROG -g OID
PROG -n OID 分别是OID是请求的OID。 PROG命令应该返回响应varbind作为三个单独的行打印到stdout - 第一行应该是返回值的OID,第二行应该是它的TYPE(文本字符串之一整数,计量器,计数器,时间戳) ,ipaddress,objectid或string),第三个应该是值本身。
如果命令无法返回适当的varbind - 例如指定的OID与GET请求的有效实例不对应,或者GETNEXT没有以下实例 - 那么它应该退出而不产生任何输出。这将导致SNMP noSuchName错误或noSuchInstance异常。
SET请求将导致命令被调用为:
PROG -s OID TYPE VALUE 其中TYPE是上面列出的标记之一,表示作为第三个参数传递的值的类型。
如果赋值成功,PROG命令应退出而不产生任何输出。应该通过将一个字符串写入不可写或错误类型到stdout来指示错误,代理将生成相应的错误响应。