2013-05-03 102 views
1

我想將freeradius統計信息擴展爲snmp。我想監視這些值並在rrd文件中收集它們。 我的問題是這些值應該是rrd計數器,但似乎計數器值需要檢索INTEGER而不是STRING 。您可以在此snmpwalk中看到該值返回爲STRING。SNMP擴展爲INTEGER而不是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中使用的文件/貓由腳本/usr/local/sbin/radstat.sh產生

如何使這個輸出變爲整數?

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" 

感謝 多米尼克

回答

1

您可能需要使用代替延長,使你的腳本可以指定返回的類型。從man snmpd.conf

通[-p優先] MIBOID PROG 將通過在MIBOID根到指定PROG命令的子樹的控制。 GET和這棵樹中的OID GETNEXT請求將觸發該命令,稱爲:

PROG -g OID

PROG -n OID分別 ,其中OID是請求OID。 PROG命令應該返回響應varbind作爲三個單獨的行打印到stdout - 第一行應該是返回值的OID,第二個應該是它的TYPE(文本字符串之一integer,gauge,counter,timeticks,ipaddress ,objectid,或字符串),第三個應該是價值本身。

如果該命令無法返回適當的varbind - 例如指定的OID不對應於GET請求的有效實例,或者沒有以下GETNEXT實例 - 則應該退出而不產生任何輸出。這將導致SNMP noSuchName錯誤或noSuchInstance異常。

設置請求將導致命令被稱爲:

PROG -s OID類型值 其中類型是上面列出的令牌之一,表明作爲第三個參數傳遞的值的類型。

如果賦值成功,PROG命令應該退出而不產生任何輸出。通過將其中一個字符串不可寫或錯誤類型寫入stdout來指示錯誤,並且代理將生成相應的錯誤響應。

相關問題