zoukankan      html  css  js  c++  java
  • 基于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'];

    }

    ?>

  • 相关阅读:
    关于心累的思考
    关于组件化开发的思考
    分页组建感想
    工作日记
    unload没有用
    今天很不开心
    select option
    reduce()用法
    $.each()用法
    MFC创建对话框组件对应变量并进行设置值(VS2010)
  • 原文地址:https://www.cnblogs.com/isykw/p/6100845.html
Copyright © 2011-2022 走看看