通过PHP+SNMP获取远程服务器状态的方法

发布于 2022-10-03 18:36:42 字数 3552 浏览 9 评论 0

在这里,关于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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文