phpSNMP

phpSNMP is an SNMP implementation based on libsnmp, which is written in Python. It has been ported to 100% pure PHP.

Why not just use the SNMP extension?

Dependencies

phpSNMP requires PHP 4.3.0 or better with sockets enabled. Mcrypt is required for privacy in SNMP v3.

phpSNMP is known to work on FreeBSD, Linux and Windows.

NOTE: users of previous versions should modify their code to use the version constants rather than hardcoded numbers. $snmp->version = 2; will not have the desired effect. Use $snmp->version = SNMP_VERSION_2;

Download

TODO

FAQ

Usage

<?php
  error_reporting
(E_ALL);
  
ini_set('memory_limit''256M');

  require(
'snmp.php');

  
$snmp = new snmp();

  
$oid '.1.3.6.1.2.1.69.1.1.3';
  
$oid $argv[1];

  
// test the oid_format function
  
$z oid_format($oidOID_TEXT);
  
$zz oid_format($zOID_NUMERIC);
  echo 
"$oid => $z => $zz\n";
exit;

  
$ip '172.16.0.116';         // ip address or hostname
  
$ips = array($ip'172.16.0.64');    // array of ip addresses or hostnames
  
$community 'public';        // community string
  
$oid '.1.3.6.1.2.1.1';        // only numerical oids are supported
  
$oids = array('.1.3.6.1.2.1.1.1''.1.3.6.1.2.1.1.3');

  
$snmp = new snmp();

  
$snmp->version SNMP_VERSION_3;
  
print_r($snmp->get('localhost''.1.3.6.1.2.1.1.3.0', array('v3_flags'=>SNMP_AUTH_PRIV'v3_user'=>'v3user',
                                                              
'v3_auth'=>'authpassword''v3_priv'=>'privpassword')));

  
$snmp->version SNMP_VERSION_2;

  
print_r($snmp->walk($ip$oid$community));
  
print_r($snmp->multi_walk($ips$oid$community));

  
// get system uptime
  
print_r($snmp->get($ip'.1.3.6.1.2.1.1.3.0'$community));
  
print_r($snmp->multi_get($ips'.1.3.6.1.2.1.1.3.0'$community));

  
// bulk get
  
print_r($snmp->bulk_get($ip$oids));

  
// reset cable modem(s)
  
$oid '.1.3.6.1.3.83.1.1.4.0.1.1.3.0';
  
$snmp->set($ip$oid1'i''private');
  
$snmp->multi_set($ips$oid1'i''private');

  
// send a trap
  
$ip '123.45.12.3';
  
$community 'public';
  
$varbind $snmp->build_varbind('.1.3.6.1.3.83.1.1.4.1'17'i');
  
$enterprise '.1.3.6.1.3.83.1.1.4.0.1.1.3.0';
  
$agent '127.0.0.1';
  
$trap_type TRAP_LINKUP;
  
$specific_trap_type 2;
  
$uptime 123;

  
$snmp->trap($ip$community$varbind$enterprise$agent$trap_type$specific_trap_type$uptime);
?>