基於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'];

 

 

}

 

?>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM