【SNMP】擴增自訂的SNMP MIB OID。去抓檔案名稱,生成時間,還有數量。

動機


既然snmp這麼方便,認證也很簡單,那我就自己創作屬於自己的OID吧!!

想法


做一個snmp oid,在乎叫他的時候
他會回我資料夾下的檔案數量,跟下面所有檔案的名稱,還有時間。

動手做


其實範例在
/etc/snmp/snmpd.conf
裡面都講得很詳細了
所以我直接去複製範例的來改,net-snmp的預設範例在
/usr/local/src/net-snmp/local/passtest
如果沒有 find 或 locate 一下吧
接下來找個地方放,cp過去/tmp吧
# cp /usr/local/src/net-snmp/local/passtest /tmp.sh
# vim /tmp/agent.sh
修改一下內容,改成自己的想法,我這邊就是把/tmp下面的檔案通通ls出來
然後自創一個oid .1.3.6.1.4.1.2021.200 來裝
#!/bin/sh -f
#auther:wei 20150922
PATH=$path:/bin:/usr/bin:/usr/ucb
PLACE=".1.3.6.1.4.1.2021.200"
REQ="$2"
#if $1 not null
if [ "$1" = "-n" ]; then
        case "$REQ" in
                $PLACE) RET=$PLACE.1;;
                *)      exit 0;;
        esac
else
        case "$REQ" in
                $PLACE) exit 0;;
                *)      RET=$REQ;;
        esac
fi

echo "$RET"
case "$RET" in
        $PLACE.1)
                echo "string";
                pidfilelist=`ls -Al /tmp --time-style '+%s' | grep pid| awk '{print $6","$7}'`;
                for item in "${pidfilelist[@]}"
                do
                        echo $item
                done;
                exit 0;;
        $PLACE.2)
                echo "string";
                echo `ls /tmp | wc -l`;
                exit 0;;
        *)      echo "string";echo "ack... $RET $REQ";exit 0;;
esac
這樣我在下 .1.3.6.1.4.1.2021.200.1 的時候,他會回我/tmp的內的檔案名稱跟unix time
改成 .1.3.6.1.4.1.2021.200.2 就會回我數量
這邊用到 ls 的參數
 --time-style '+%s'
這樣他就會幫我轉換成unix時間了,以後程式讀取再做轉換也更快
再來讓snmp能夠pass給我的sh
所以必須在設定檔中設定 pass
# vi /etc/snmp/snmp.conf
找到關鍵字pass
然後再後面加上一行
pass .1.3.6.1.4.1.2021.200 /tmp/agent.sh
接著reload or restart snmp服務
# /etc/init.d/snmpd restart

測試


其實直接輸入參數就可以觸發了
如果你有注意到他的$1 $2 的話...
所以我們直接送參數!
# /tmp/agent.sh aaa .1.3.6.1.4.1.2021.200.1
.1.3.6.1.4.1.2021.200.1
string
1443089401,a.pid 1443089401,b.pid 1443089401,c.pid 1443089401,d.pid 1443089401,e.pid 1443089401,f.pid 1443089401,g.pid 1443089401,h.pid 1443089401,i.pid
帥啊老皮,程式在做切割加工就可以很漂亮的拿到資料了
再來試試看2,取數量
# /tmp/agent.sh aaa .1.3.6.1.4.1.2021.200.2
.1.3.6.1.4.1.2021.200.2
string
9
絕讚阿!再來走走正規的取得法
# snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.200.2
UCD-SNMP-MIB::ucdavis.200.2 = STRING: "9"
完工拉!

留言