通过PHP+SNMP获取远程服务器状态的方法
在这里,关于apache和mysql的安装就不介绍了,可以参考网上大量的帖子。
1、安装apache
2、安装mysql
3、先安装snmp
(1)下载wget http://jaist.dl.sourceforge.net/sourceforge/net-snmp/net-snmp-5.1.3.1.tar.gz
(2)解压tar zxvf net-snmp-5.1.3.1.tar.gz
(3)cd net-snmp-5.1.3.1;./configure --prefix=/usr/local/net-snmp-5.1.3.1
(4)由于直接编译PHP不支持snmp,所以在这里得小小改动下,在目录/usr/local/net-snmp-5.1.3.1/include/net-snmp/中,编辑net-snmp-config.h这个文件,大概在1331行左右,找到
Quote:
/* UNdefine to allow specifying zero-length community string */
/*#define NO_ZEROLENGTH_COMMUNITY 1 */
改为:
Quote:
/* UNdefine to allow specifying zero-length community string */
#define NO_ZEROLENGTH_COMMUNITY 1 */
这样就PHP就支持SNMP了。
(4)接着make;make install。在make install时,系统会提示相关问题,根据实际情况选择,我选择了snmp v1,其它的一路回车
(5)安装完成后,就要启动snmp服务了。首先,编辑snmpd.conf配置文件,我是内容是:vi /etc/snmpd.conf
Quote:
com2sec notConfigUser default public
group notConfigGroup v1 notConfigUser
view all included .1.3.6.1
access notConfigGroup "" any noauth exact all none none
disk /
disk /home
disk /usr/local
disk /tmp
(6)下面的命令启动snmp,相关参数的涵义请参考帮助命令
/usr/local/net-snmp-5.1.3.1/sbin/snmpd -Lsd -Lf /dev/null -p /var/run/snmpd -a -c /etc/snmpd.conf
(7)测试,如果有下列数据显示,snmp就成功启动了
Quote:
[root@localhost net-snmp]# /usr/local/net-snmp-5.1.3.1/bin/snmpwalk -c public localhost
SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 2.6.12 #1 Wed Aug 24 16:34:55 CST 2005 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
SNMPv2-MIB::sysUpTime.0 = Timeticks: (237707) 0:39:37.07
SNMPv2-MIB::sysContact.0 = STRING: root@
SNMPv2-MIB::sysName.0 = STRING: localhost.localdomain
SNMPv2-MIB::sysLocation.0 = STRING: Unknown
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB
......
4、安装PHP
在PHP的安装目录中进行编译:
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd-2.0.54/bin/apxs --with-mysql=/usr/local/mysql --with-snmp=/usr/local/net-snmp/
make;makeinstall
5、测试PHP+snmp
在apache中的Document目录中编辑文件:
Quote:
vi index.php
<?php
$a = snmpwalkoid("127.0.0.1","public","1.3.6.1.4.1.2021.11.52"
for (reset($a);$i = key($a);next($a)){
echo "$i: $a[$i]<br>;\n";
}
?>;
在浏览器中如有相关显示,则说明已经成功了!虽然已经有数值显示出来了,但是我只是需要结果,这应该如何做呢?呵呵,当然有办法:
Quote:
<?php
snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
$a = snmpwalk("127.0.0.1","public","1.3.6.1.4.1.2021"
foreach($a as $port)
{
echo "$port<br>;\n";
}
?>;
主要是这条命令snmp_set_valueretrieval(SNMP_VALUE_PLAIN)就可以实现我们的目标了,到这里,PHP+SNMP的配置基本成功了,接着就要进行相关的开发了,呵呵!开发好了,再帖出来和大家分享!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论