基于php的snmp管理端开发
一.系统环境:
操作系统:CentOS 5.4 内核:Linux_2.6
编译环境:gcc 4.1.2 代码版本:php-5.2.8.tar.gz
二.安装php
1.首先要php支持snmp,按如下配置方法(红色部分是关于snmp的,其他参数视情况而定)
#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --enable-trace-vars -with-MySQL=/var/lib/mysql --enable-soap --with-xmlrpc --enable-mbstring --enable-sockets --with-snmp
#make
#make install
三.函数介绍
安装完成后,php中即可调用如下函数
3.1 snmpget 取得指定类识别码。
语法: snmpget(string hostname, string community, string object_id);
返回值: oid对应类型(个人觉得都可以理解为字符串)
函数种类: 网络系统
内容说明: 本函数可用来取得指定的类识别代码 (OID, Object Identifier)。参数 hostname 为指定的机器。参数 community 为社群名称,有 public 或 private 等。参数 object_id 即为 OID 类,为 MIB 所定义的类。返回值为 OID 值,若失败则返回 false。
使用范例,下面为部份范例
<?php
snmpget("127.0.0.1", "public", " 1.3.6.1.2.1.1.4.0");
?>
3.2snmpset 设置对应可写oid的值
语法:bool snmpset ( string hostname, string community, string object_id, string type, mixed value , int timeout , int retries )
返回值:逻辑值(0/1)
函数种类: 网络系统
内容说明: 本函数可用来设置指定的类识别代码 (OID, Object Identifier)。参数 hostname 为指定的机器。参数 community 为可写社群名称,有 public 或 private 等。Type为oid对应数据类型,,参数 object_id 即为 OID 类,为 MIB 所定义的类。设置成功返回值为 ture,若失败则返回 false。
使用范例:
<?php
snmpset("127.0.0.1", "223323", " 1.3.6.1.2.1.1.4.0",”string”,”342563790@qq.com”,3,1);
?>
3.3 snmpwalk 取得所有类。
语法: array snmpwalk(string hostname, string community, string object_id, int [timeout], int [retries]);
返回值: 数组
函数种类: 网络系统
内容说明: 本函数可用来取得所有类识别代码 (OID, Object Identifier),取得类为从根类 (root) 开始的全部 MIB 类。参数 hostname 为指定的机器。参数 community 为社群名称,有 public 或 private 等。参数 object_id 即为 OID 类,为 MIB 所定义的类,只要输入空字符串即可。返回值为 OID 数组,若失败则返回 false。
使用范例 下面为部份范例
<?php
$a = snmpwalk("127.0.0.1", "public", "1.3.6.1.2.1.1");
for ($i=0; $i<count($a); $i++) {
echo $a[$i]."<br>n";
}
?>
3.4 snmpwalkoid 取得网络本体树状信息。
语法: array snmpwalkoid(string hostname, string community, string object_id, int [timeout], int [retries]);
返回值: 数组
函数种类: 网络系统
内容说明: 本函数可用来取得所有类识别代码 (OID, Object Identifier),取得类为从根类 (root) 开始的全部 MIB 类及其值。参数 hostname 为指定的机器。参数 community 为社群名称,有 public 或 private 等。参数 object_id 即为 OID 类,为 MIB 所定义的类,只要输入空字符串即可。返回值为数组,若失败则返回 false。
使用范例,下面为部份范例
<?php
$a = snmpwalkoid("127.0.0.1", "public", "");
for (reset($a); $i = key($a); next($a)) {
echo $i.": ".$a[$i]."<br>n";
}
?>
3.5 snmp_get_quick_print 取得 snmp 函数库中的 quick_print 值。
语法: boolean snmp_get_quick_print(void);
返回值: 布尔值
函数种类: 网络系统
内容说明: 本函数可用来取得 UCD SNMP 函数库中的 quick_print 值,在 Windows NT 系统上本函数无法作用。本函数不需要输入参数,返回 0 表示 quick_print 关闭,1 表示打开。
3.6 snmp_set_quick_print 配置 snmp函数库中的 quick_print 值。
语法: void snmp_set_quick_print(boolean quick_print);
返回值: 无
函数种类: 网络系统
内容说明: 本函数配置 UCD SNMP 函数库中的 quick_print 值,在 Windows NT 系统上本函数无法作用。参数 quick_print 值为 0 表示 quick_print 关闭,1 表示打开。本函数无返回值。
使用范例
<?php
snmp_set_quick_print(0);
$a = snmpget("127.0.0.1", "public", ".1.3.6.1.2.1.2.2.1.9.1");
echo $a."n";
snmp_set_quick_print(1);
$a = snmpget("127.0.0.1", "public", ".1.3.6.1.2.1.2.2.1.9.1");
echo $a."n";
?>
返回值为
Timeticks: (0) 0:00:00.00
0:00:00.00
三.调用snmp函数
1后台调用示例代码如下:(保存为snmp.php)//附件在下方,包含示例文件
<?php
switch ($_REQUEST['Submit'])
{
case "get":
$ret = snmpget($_REQUEST['getip'], $_REQUEST['getcom'], $_REQUEST['getoid'],5,1);
echo $ret;break;
case "walk":
$ret=snmpwalk($_REQUEST['getip'], $_REQUEST['getcom'], $_REQUEST['getoid'],5,1);
for($i=0;$i<count($ret);$i++)
echo $ret[$i]."<br>";
break;
case "set":
if(snmpset($_REQUEST['setip'], $_REQUEST['setcom'], $_REQUEST['setoid'],$_REQUEST['type'],$_REQUEST['setvalue'],5,1))
echo "<br>Set <".$_REQUEST['setoid']."=".$_REQUEST['setvalue']."> ok!";
else
echo "<br>Set <".$_REQUEST['setoid']."> fail,maybe no this OID or it is just read-only!";
break;
default:
echo "Without this operation:".$_REQUEST['Submit'];
}
?>
基于php的snmp管理端开发的更多相关文章
- Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具
Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. mysqlreport是mysql性能监测时最常用的工具,对了解mysql运行状态和配置调整都有很大 ...
- 基于UniApp社区论坛多端开发实战
什么是移动端WebApp 移动端WebApp: 泛指手持设备移动端的web 特点: - 类App 应用,运行环境是浏览器 - 可以包一层壳,成为App - 常见的混合应用: ionic, Cordov ...
- 基于SAE+CodeIgniter3.0+管理端angularjs+前台amazeui的多用户博客系统V1.0--系统设计(一)
开发环境: 服务器系统:CentOS-6.x web服务器:Apache-2.2.x php版本:PHP-5.3.x 开发工具:sublime text 3 ,谷歌浏览器 数据库查询工具:phpmya ...
- 基于W5500的嵌入式SNMP代理端实现
一 实验背景 近期一个做焊接设备的朋友想在焊机上加入监控的新功能,实时获取焊机的温度.功耗等參数,还可简单控制,实现对集群焊接设备的网络化管理.而这个朋友不想在开发管理系统上花太多精力,想找一个 ...
- 转: 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端
from: http://ybak.iteye.com/blog/1853335 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端 游戏服 ...
- 基于浏览器的开源“管理+开发”工具,Pivotal MySQL*Web正式上线!
基于浏览器的开源“管理+开发”工具,Pivotal MySQL*Web正式上线! https://www.sohu.com/a/168292858_747818 https://github.com/ ...
- Twitter Bootstrap 3.0 正式发布,更好地支持移动端开发
Twitter Bootstrap 3.0 终于正式发布了.这是一个圆滑的,直观的和强大的移动优先的前端框架,用于更快,更容易的 Web 开发.几乎一切都已经被重新设计和重建,更好的支持移动端设备. ...
- tomcat管理端的页面安全措施
由于公司的项目并未启用nginx负载均衡,所以自然也没用到tomcat与web应用一对一的安全操作,经常会遇到 重启单个应用又不想重启tomcat的情况.同时,又出于安全考虑,将tomcat的默认管理 ...
- 基于Nodejs生态圈的TypeScript+React开发入门教程
基于Nodejs生态圈的TypeScript+React开发入门教程 概述 本教程旨在为基于Nodejs npm生态圈的前端程序开发提供入门讲解. Nodejs是什么 Nodejs是一个高性能Ja ...
随机推荐
- 深入浅出MyBatis
参考文献:深入浅出MyBatis MyBatis功能架构图: MyBatis内部原理流程图: 详情见:深入浅出MyBatis
- cmake 静态调用 c++ dll 的类的一个例子(Clion IDE)
CMakeLists.txt project(aaa) add_library(aaa SHARED aaa.cpp) add_executable(bbb bbb.cpp) target_link_ ...
- EditPlus开发Python的简单设置
EditPlus是一个功能强大的编辑器,这里介绍用它来开发Python程序所需要的简单设置. 环境:win7 1.设置Python语法缩进: [1]工具-->设置用户自定义工具 [2]在分类面板 ...
- osharpV3数据库初始化
var databaseInitializer = new DatabaseInitializer(); databaseInitializer.MapperAssemblyFinder = new ...
- NopCommerce源码分析ContainerBuilder builder.Update(container)
/// <summary> /// Register dependencies /// </summary> /// <param name="config&q ...
- Hibernate.lock()方法中各种锁的区别
悲观锁 它指的是对数据被外界修改持保守态度.假定任何时刻存取数据时,都可能有另一个客户也正在存取同一笔数据,为了保持数据被操作的一致性,于是对数据采取了数据库层次的锁定状态,依靠数据库提供的锁机制来实 ...
- SSDB 数据库
SSDB数据库 SSDB是一套基于LevelDB存储引擎的非关系型数据库(NOSQL),可用于取代Redis,更适合海量数据的存储. 另外,rocksdb是FB在LevelDB的二次开发版本,因此也存 ...
- Code First 关系 Fluent API
通过实体框架 Code First,可以使用您自己的域类表示 EF 执行查询.更改跟踪和更新函数所依赖的模型.Code First 利用称为“约定先于配置”的编程模式.这意味着 Code First ...
- hdu5009 Paint Pearls (DP+模拟链表)
http://acm.hdu.edu.cn/showproblem.php?pid=5009 2014网络赛 西安 比较难的题 Paint Pearls Time Limit: 4000/2000 M ...
- Java 中浮点数---------BigDecimal和double(初探)
为什么要使用 bigdecimal? 借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了 ...