用python扩展snmp
這段時間在做服務(wù)器狀態(tài)監(jiān)控,是借助snmp協(xié)議來實現(xiàn)的,這里把snmp的安裝配置和python擴(kuò)展snmp記錄一下,也方便我以后查閱。
一、安裝snmp
1、linux下安裝net-snmp
環(huán)境:CentOS 6.3_64
1.1 通過yum查找snmp完整名稱
yum search snmp
1.2 安裝net-snmp
yum install net-snmp -y
安裝成功,版本為5.5:
1.3更改配置文件
文件路徑:/etc/snmp/snmpd.conf
在默認(rèn)配置文件的基礎(chǔ)上更改以下幾個關(guān)鍵點:
說明:
41行的是默認(rèn)值不用改動,這里的public比較關(guān)鍵,下文要用的到。
47行和48行是snmp協(xié)議版本。
57行和64行用all把權(quán)限放開(注意這里只是為了demo)
1.4 啟動snmp服務(wù)
/etc/init.d/snmpd start
或者
service snmpd start
配置開機啟動:
chkconfig snmpd on
1.5 驗證snmp
snmpwalk -v 1 -c public IPADDR .1
附:
啟動服務(wù)后如果不能正常運行,首先查看防火墻狀態(tài):/etc/init.d/iptables status
根據(jù)需要進(jìn)行以下操縱:
臨時關(guān)閉防火墻:/etc/init.d/iptables stop
永久關(guān)閉防火墻:chkconfig --level 35 iptables off
將161端口和162端口設(shè)置通過防火墻:
vi /etc/sysconfig/iptables
添加如下內(nèi)容:
-A INPUT -m state --state NEW -m udp -p udp --dport 161 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 162 -j ACCEPT
如圖所示:
?重啟iptables服務(wù):
service iptables restart
或者
/etc/init.d/iptables restart
2、windows下安裝net-snmp
網(wǎng)址:http://sourceforge.net/projects/net-snmp/files/
下載路徑:http://hivelocity.dl.sourceforge.net/project/net-snmp/net-snmp%20binaries/5.5.1-binaries/net-snmp-5.5.1-1.x86.exe
網(wǎng)上有比較詳細(xì)的教程,我這里就不在贅述了,
具體參考這里:http://www.cnblogs.com/VRS_technology/archive/2010/08/12/1798191.html
關(guān)鍵點:在路徑(軟件安裝路徑)\etc\snmp\下,添加文件snmpd.conf(我的做法是將上文中linux下的snmpd.conf文件直接copy過來)。
二、用python擴(kuò)展snmp
在snmpd.conf文件里面有通過bash擴(kuò)展的例子,如圖所示:
我的版本是5.5,不知道為啥,雖然配置文件里面給的是用exec,但我發(fā)現(xiàn)這里要用extend來進(jìn)行。
bash配置:
extend .1.3.6.1.4.1.23456.51 shelltest2 /bin/sh /tmp/test1.sh
python配置:
extend .1.3.6.1.4.1.23456.52 pythontest /usr/bin/python /tmp/test1.py?
test1.sh內(nèi)容如下:?
#! /bin/shecho "123" exit 22test1.py內(nèi)容如下:
#! /usr/bin/python print "just a test"重啟snmpd服務(wù):
service snmpd restart
snmpwalk訪問:
snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.23456.50.4.1
snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.23456.51.4.1
snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.23456.52.4.1
執(zhí)行效果
從圖中可以看出通過extend配置的兩個都執(zhí)行成功了。
如果出現(xiàn)以下錯誤,則關(guān)閉selinux:
STRING: "/usr/bin/python: can't open file '/tmp/test1.py': [Errno 13] Permission denied"
附:
查看selinux狀態(tài): getenforce
臨時關(guān)閉selinux(不需要重啟): setenforce 0
永久關(guān)閉selinux(需要重啟):
vi /etc/selinux/config
將SELINUX=enforcing更改為SELINUX=disable,如圖所示:
三、實現(xiàn)自定義服務(wù)狀態(tài)監(jiān)控
這個其實就是第二部分里面的東西,單獨列出來主要是為了引入一個跨平臺的服務(wù)器狀態(tài)監(jiān)控的python模塊:psutil
psutil 是用來獲取正在運行的進(jìn)程信息和系統(tǒng)的CPU和內(nèi)存的利用率的(支持Linux, OS X, FreeBSD 和Windows系統(tǒng))。
網(wǎng)址:https://github.com/elventear/psutil
python代碼(getCpuUsage.py):
#! /usr/bin/pythonimport psutilprint psutil.cpu_percent()snmpd.conf配置:
extend .1.3.6.1.4.1.23456.60 getCpuUsage /usr/bin/python /tmp/getCpuUsage.py
轉(zhuǎn)載于:https://www.cnblogs.com/MikeZhang/archive/2012/11/18/pythonExtendSnmp20121118.html
總結(jié)
以上是生活随笔為你收集整理的用python扩展snmp的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery1.9.1源码分析--Eve
- 下一篇: Python最常用的函数、基础语句有哪些