raspberry PI 使用snmp协议取pc或route的cpu使用率
raspberry PI 配置
1:在raspberry安装snmp 客户端 sudo apt-get install snmp
安装mib下载器 使oid可读 sudo apt-get install snmp-mibs-downloader
edit /etc/snmp/snmp.conf and comment out the following line:
mibs :
下载 mib : download-mibs
2:为了本机测试 ,再安装 snmp 服务
sudo apt-get install snmpd
编辑 edit /etc/snmp/snmpd.conf 取消这句的注释
rocommunity public localhost
3:用以下命令测试 安装是否正常
snmpwalk -v1 -cpublic localhost
参考网站 http://wiki.debian.org/SNMP
--------------------------------------------------------------------------------------
Win 7 配置
1
控制面板---程序与功能---打开或关闭windows功能,选简单网络管理协议(SNMP)
不用选 WMI SNMP 提供程序 ,因为raspberry 用 net-snmp 连
2
控制面板----管理工具--服务
启动 SNMP service
双击进入选项
代理---这里我都选了,如果不需要可以取消
安全
参考网站 http://www.loriotpro.com/ServiceAndSupport/How_to/InstallWXPAgent_EN.php
--------------------------------------------------------
现在 ,可以从raspberry 测试是否能连到win7 并取得信息 如果 win7 ip=192.168.0.104
可以在 raspberry : snmpwalk -v 2c -c public 192.168.0.104 system
如果能得到系统信息 如计算机名 等 即配置成功
------------------------------------------------------------------------------------------
脚本
raspberry装的是debian linux,新版本的 default shell 是dash ,而不是 bash
据说 dash 快且稳定,但是bash的资料更多,速度我观察也没慢多少 ,所以 ,写脚本之前先把default shell 换回bash
方法是 :运行 sudo dpkg-reconfigure dash 后,选择 no。
脚本的目的是 :从 txt 配置文件读取 目标机器ip,cpu使用率(如果实际使用率比设定的高,就邮件报警),
报警邮箱地址
每2分钟使用snmpwalk 读取 目标cpu使用率,然后与设定值比较,大于就向邮箱地址发邮件
#!/bin/bash cd /emailTest
# 将data.txt的内容存入num数组
num=( $(<data.txt) )
IPadress=${num[0]} # 取snmpwalk的返回值到snmpReturn 单核去掉结尾的.3 测试机器是4核
snmpReturn=`snmpwalk -v 2c -c public -O v $IPadress 1.3.6.1.2.1.25.3.3.1.2.3` # 以:分割 将snmpReturn切成数组
IFS=':' read -a arr <<< "$snmpReturn" maxUsage=${num[1]} EmailAddress=${num[2]} # 如果使用率超过设定的最大值 if ((arr[1]>=$maxUsage)) then # 写进文件 发往邮箱
echo "your cpu occupy usage is ${arr[1]}" > temp001.txt sudo ssmtp abcdefg@sina.cn < temp001.txt else # 将使用率经udp发往监控机器的9050端口 该机器运行一个c#程序,侦听udp 9050并画cpu图
echo -n "${arr[1]}" >/dev/udp/$IPadress/9050 fi