Skip to content

FreeDSx/SNMP

Folders and files

NameName
Last commit message
Last commit date
Jan 22, 2023
Mar 11, 2019
Dec 29, 2021
Jan 22, 2023
Dec 26, 2021
Jan 28, 2021
Jan 29, 2022
Aug 2, 2018
Jan 28, 2021
Jan 22, 2023
Aug 2, 2018
Dec 24, 2021
Dec 26, 2021

Repository files navigation

FreeDSx SNMP

FreeDSx SNMP is a pure PHP SNMP library. It has no requirement on the core PHP SNMP extension. It implements SNMP client functionality described in RFC 3412 / RFC 3416 / RFC 3414. It also includes functionality described in various other RFCs, such as SHA2 authentication (RFC 7860) and strong encryption mechanisms (3DES / AES-192-256). Some main features include:

  • SNMP version 1, 2, and 3 support.
  • Supports all authentication mechanisms (md5, sha1, sha224, sha256, sha384, sha512).
  • Supports all privacy encryption mechanisms (des, 3des, aes128, aes192, aes256).
  • Supports all client request types (Get, GetNext, GetBulk, Set, Inform, TrapV1, TrapV2).
  • Supports sending SNMPv1 and SNMPv2 traps (including inform requests).
  • Trap Sink server for receiving and processing incoming traps.

The OpenSSL extension is required for privacy / encryption support. The GMP extension is required for 64-bit counters (BigCounter).

Documentation

Getting Started

Install via composer:

composer require freedsx/snmp

Use the SnmpClient class and the helper classes:

use FreeDSx\Snmp\SnmpClient;

$snmp = new SnmpClient([
    'host' => 'servername',
    'version' => 2,
    'community' => 'secret',
]);

# Get a specific OID value as a string...
echo $snmp->getValue('1.3.6.1.2.1').PHP_EOL;

# Get a specific OID as an object...
$oid = $snmp->getOid('1.3.6.1.2.1');
var_dump($oid);

echo sprintf("%s == %s", $oid->getOid(), (string) $oid->getValue()).PHP_EOL;

# Get multiple OIDs and iterate through them as needed...
$oids = $snmp->get('1.3.6.1.2.1.1.1', '1.3.6.1.2.1.1.3', '1.3.6.1.2.1.1.5');
 
foreach($oids as $oid) {
    echo sprintf("%s == %s", $oid->getOid(), (string) $oid->getValue()).PHP_EOL;
}

# Using the SnmpClient, get the helper class for an SNMP walk...
$walk = $snmp->walk();

# Keep the walk going until there are no more OIDs left
while($walk->hasOids()) {
    try {
        # Get the next OID in the walk
        $oid = $walk->next();
        echo sprintf("%s = %s", $oid->getOid(), $oid->getValue()).PHP_EOL;
    } catch (\Exception $e) {
        # If we had an issue, display it here (network timeout, etc)
        echo "Unable to retrieve OID. ".$e->getMessage().PHP_EOL;
    }
}

echo sprintf("Walked a total of %s OIDs.", $walk->count()).PHP_EOL; 

For a complete configuration reference please see the configuration doc. There are also SNMP v3 examples for NoAuthNoPriv, AuthNoPriv, and AuthPriv in the general usage doc.