動機
既然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"完工拉!
留言
張貼留言