一.系统环境:

操作系统: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管理端开发的更多相关文章

  1. Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具

    Cacti 是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. mysqlreport是mysql性能监测时最常用的工具,对了解mysql运行状态和配置调整都有很大 ...

  2. 基于UniApp社区论坛多端开发实战

    什么是移动端WebApp 移动端WebApp: 泛指手持设备移动端的web 特点: - 类App 应用,运行环境是浏览器 - 可以包一层壳,成为App - 常见的混合应用: ionic, Cordov ...

  3. 基于SAE+CodeIgniter3.0+管理端angularjs+前台amazeui的多用户博客系统V1.0--系统设计(一)

    开发环境: 服务器系统:CentOS-6.x web服务器:Apache-2.2.x php版本:PHP-5.3.x 开发工具:sublime text 3 ,谷歌浏览器 数据库查询工具:phpmya ...

  4. 基于W5500的嵌入式SNMP代理端实现

     一 实验背景 近期一个做焊接设备的朋友想在焊机上加入监控的新功能,实时获取焊机的温度.功耗等參数,还可简单控制,实现对集群焊接设备的网络化管理.而这个朋友不想在开发管理系统上花太多精力,想找一个 ...

  5. 转: 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端

    from: http://ybak.iteye.com/blog/1853335 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端 游戏服 ...

  6. 基于浏览器的开源“管理+开发”工具,Pivotal MySQL*Web正式上线!

    基于浏览器的开源“管理+开发”工具,Pivotal MySQL*Web正式上线! https://www.sohu.com/a/168292858_747818 https://github.com/ ...

  7. Twitter Bootstrap 3.0 正式发布,更好地支持移动端开发

    Twitter Bootstrap 3.0 终于正式发布了.这是一个圆滑的,直观的和强大的移动优先的前端框架,用于更快,更容易的 Web 开发.几乎一切都已经被重新设计和重建,更好的支持移动端设备. ...

  8. tomcat管理端的页面安全措施

    由于公司的项目并未启用nginx负载均衡,所以自然也没用到tomcat与web应用一对一的安全操作,经常会遇到 重启单个应用又不想重启tomcat的情况.同时,又出于安全考虑,将tomcat的默认管理 ...

  9. 基于Nodejs生态圈的TypeScript+React开发入门教程

    基于Nodejs生态圈的TypeScript+React开发入门教程   概述 本教程旨在为基于Nodejs npm生态圈的前端程序开发提供入门讲解. Nodejs是什么 Nodejs是一个高性能Ja ...

随机推荐

  1. quartz_jobs.xml标准配置

    <?xml version="1.0" encoding="UTF-8"?><job-scheduling-data xmlns=" ...

  2. Java学习笔记2

    package welcome; public class Constants { public static void main(String[] args){ final double CM_PE ...

  3. dedecms笔记

    截取字符串 方法一: [field:title function="cn_substr(@me,10)"/] 方法二: {dede:arclist typeid=’9′ title ...

  4. 让FineUI数据绑定支持dynamic对象

    FineUI非常好用,但是有一个缺点,就是不支持dynamic对象的数据绑定.查了一下源代码,找了解决方案,其实只需要几行代码就可以搞定,这就是开源的好处. 本想直接在CodePlex上贡献代码,但不 ...

  5. rpm 命令

    这些事rpm的常用参数!!! 你可以在linux下man 一下rpm就知道了!!! 不过是英文的,不然你可以百度一下rpm就知道了额!!! 下面我帮你贴几个!!!!rpm 常用命令1.安装一个包 # ...

  6. text-indent:2em详解

    text-indent:2em; 解释一下:text的意思是文本,indent在计算机英语中意思是缩进,至于后面的2em意思就是2个相对单位: em又是什么单位? em这个单位的意思就是文字的高度,1 ...

  7. array_map与array_column之间的关系

    /*|----------------------------------------------------------|array_map();将回调函数作用到给定数组的单元上|array_col ...

  8. python sys os hashlib_MD5 模块

    模块 内置模块是Python自带的功能,在使用内置模块相应的功能时,需要[先导入]再[使用] 一.sys 用于提供对Python解释器相关的操作: ? 1 2 3 4 5 6 7 8 9 sys.ar ...

  9. mysql主从数据库不同步的2种解决方法(转)

    今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master status; ...

  10. php生成唯一随机码

    最终使用: echo md5(time() . mt_rand(1,1000000)) //A:利用时间戳的方法 md5("admin"); // B:32位MD5加密 subst ...