PHP.mk документација

SNMP

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

class.snmp.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека class.snmp.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
SNMP

Референца за `class.snmp.php` со подобрена типографија и навигација.

class.snmp.php

SNMP класа

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

Вовед

Презентира SNMP session.

Синопсис на класата

class SNMP {
/* Константи */
public const int VERSION_1;
public const int VERSION_2c;
public const int VERSION_2C;
public const int VERSION_3;
public const int ERRNO_NOERROR;
public const int ERRNO_ANY;
public const int ERRNO_GENERIC;
public const int ERRNO_TIMEOUT;
/* Својства */
public readonly array $info;
public ?int $max_oids;
/* Методи */
public __construct(
         int $version,
         string $hostname,
         string $community,
         int $timeout = -1,
         int $retries = -1
)
public close(): bool
public get(array|string $objectId, bool $preserveKeys = false): mixed
public getErrno(): int
public getError(): string
public getnext(array|string $objectId): mixed
public set(array|string $objectId, array|string $type, array|string $value): bool
public setSecurity(
         string $securityLevel,
         string $authProtocol = "",
         string $authPassphrase = "",
         string $privacyProtocol = "",
         string $privacyPassphrase = "",
         string $contextName = "",
         string $contextEngineId = ""
): bool
public walk(
         array|string $objectId,
         bool $suffixAsKey = false,
         int $maxRepetitions = -1,
         int $nonRepeaters = -1
): array|false
}

Својства

max_oids
Максимален OID по GET/SET/GETBULK барање
valueretrieval
Ја контролира методата како ќе се вратат SNMP вредностите
SNMP_VALUE_LIBRARYНаведете го методот како ќе се вратат SNMP вредностите
SNMP_VALUE_PLAINВратените вредности ќе бидат како што се вратени од библиотеката Net-SNMP.
SNMP_VALUE_OBJECT Вратените вредности ќе бидат објекти со својствата "value" и "type", каде што вториот е една од константите SNMP_OCTET_STR, SNMP_COUNTER итн. Начинот на кој се враќа "value" се базира на тоа кој од SNMP_VALUE_LIBRARY, SNMP_VALUE_PLAIN (двоен наводник)
quick_print
Вредност на quick_print во рамките на NET-SNMP library Поставува вредност на quick_print во рамките на NET-SNMP библиотеката. Кога ова е поставено (1), SNMP библиотеката ќе врати „брзо отпечатени“ вредности. Ова значи дека само вредноста ќе биде отпечатена. Кога quick_print не е овозможено (стандардно), NET-SNMP библиотеката печати дополнителни информации вклучувајќи го типот на вредноста (т.е. IpAddress или OID). Дополнително, ако quick_print не е овозможено, библиотеката печати дополнителни хексадецимални вредности за сите низи од три или помалку знаци.
enum_print
Ја контролира начинот на печатење на enum вредностите Параметарот вклучува дали walk/get итн. треба автоматски да ги бара enum вредностите во MIB и да ги врати заедно со нивниот човечки читлив стринг.
oid_output_format
Ја контролира формата на излезниот OID
го поставува форматот на излез на целосен или нумерички. oid_output_format values
SNMP_OID_OUTPUT_FULL.iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance
SNMP_OID_OUTPUT_NUMERIC.1.3.6.1.2.1.1.3.0
SNMP_OID_OUTPUT_MODULEDISMAN-EVENT-MIB::sysUpTimeInstance
SNMP_OID_OUTPUT_SUFFIXsysUpTimeInstance
SNMP_OID_OUTPUT_UCDsystem.sysUpTime.sysUpTimeInstance
SNMP_OID_OUTPUT_NONEПретставување на OID .1.3.6.1.2.1.1.3.0 за разни
oid_increasing_check
Ја контролира деактивацијата на проверката за зголемување на OID при шетање низ OID дрвото Некои SNMP агентите се познати по враќање на OID-и по погрешен редослед, но сепак можат да го завршат шетањето. Други агенти враќаат OID-и што се надвор од редослед и можат да предизвикаат поддрво на објекти бесконечно повторување додека не се достигне границата на меморијата. PHP SNMP библиотеката стандардно врши проверка за зголемување на OID и запира со шетање на OID дрвото кога ќе открие можна јамка издавајќи предупредување за соочен OID што не се зголемува. Постави oid_increasing_check to false за да ја оневозможите оваа проверка.
exceptions_enabled
Ги контролира кои грешки ќе подигнат SNMPException наместо предупредување. Користете бинарно OR-ирани SNMP::ERRNO_* константи. Стандардно, сите SNMP исклучоци се оневозможени.
info
Својство само за читање со конфигурација на далечински агент: име на хост, порта, стандардно време на чекање, стандарден број на обиди

Претходно дефинирани константи

SNMP Типови на грешки

SNMP::ERRNO_NOERROR
Овозможува пишување SNMP-специфична грешка се случи.
SNMP::ERRNO_GENERIC
Генерална SNMP грешка се случи.
SNMP::ERRNO_TIMEOUT
Барање до SNMP агентот истече.
SNMP::ERRNO_ERROR_IN_REPLY
SNMP агентот врати грешка во одговорот.
SNMP::ERRNO_OID_NOT_INCREASING
SNMP агентот се соочи со циклус на OID што повторно пријавува OID што не се зголемува додека извршува (BULK)WALK команда. Ова укажува на лажен далечински управувач SNMP agent.
SNMP::ERRNO_OID_PARSING_ERROR
Библиотеката не успеа при парсирањето на OID (и/или типот за командата SET). Не се направени прашања.
SNMP::ERRNO_MULTIPLE_SET_QUERIES
Библиотеката ќе користи повеќе прашања за бараната операција SET. Тоа значи дека операцијата ќе се изврши на не-трансакциски начин и вториот или последователните делови може да откажат ако се соочат со неуспех на типот или вредноста.
SNMP::ERRNO_ANY
Сите SNMP::ERRNO_* кодови бинарно OR-ирани.

SNMP Протоколни верзии

SNMP::VERSION_1
SNMP::VERSION_2C, SNMP::VERSION_2c
SNMP::VERSION_3

Содржина

  • SNMP::close — Бара дрво од информации за мрежен ентитет
  • SNMP::__construct — Затвора SNMP сесија
  • SNMP::get — Определува метод како ќе бидат вратени SNMP вредностите
  • SNMP::getErrno — Создава SNMP инстанца што претставува сесија со далечински SNMP агент
  • SNMP::getError — Земи ја последната порака за грешка
  • SNMP::getnext — Преземи SNMP објект што го следи дадениот објект ID
  • SNMP::set — Враќа сите објекти вклучувајќи го нивниот соодветен ID на објект во рамките на наведениот
  • SNMP::setSecurity — Конфигурира параметри за SNMPv3 сесија поврзани со безбедност
  • SNMP::walk — Преземи поддрво на SNMP објект

Белешки од корисници 2 забелешки

swannie на swannie dot net
пред 5 години
Hopefully this helps someone else out because this was driving be bonkers for a good two hours.  It looks like valueretrieval and enum_print work together in a way that I wasn't expecting, and after re-reading may be by design but I'm not sure.  If you can't get enums to print, this might be why.

<?php
 $snmp = new SNMP(SNMP::VERSION_2C,'192.168.1.9','test');
 $snmp->oid_output_format = SNMP_OID_OUTPUT_SUFFIX;
 $snmp->valueretrieval = SNMP_VALUE_PLAIN;
 $snmp->enum_print = 0;
 echo $snmp->get('IF-MIB::ifOperStatus.10110') . "\n";
 $snmp->enum_print = 1;
 echo $snmp->get('IF-MIB::ifOperStatus.10110') . "\n";
 $snmp->quick_print = 1;
 echo $snmp->get('IF-MIB::ifOperStatus.10110') . "\n";
 $snmp->valueretrieval = SNMP_VALUE_LIBRARY;
 echo $snmp->get('IF-MIB::ifOperStatus.10110') . "\n";
 $snmp->enum_print = 0;
 echo $snmp->get('IF-MIB::ifOperStatus.10110') . "\n";
?>

Output:
1
1
1
1
up
madjev1990 на gmail dot com
пред 10 години
Part of my diploma thesis was to create web interface to command device via SNMP. So I create my own level of abstraction over SNMP class:

<?php

/**
 * Snmp library which add one level of abstraction to snmp native library.
 * It adds functionality to work with module PicoIP.With this library you can:
 * 1.Activate/deactive defined pin;
 * 2.Get status of all pins.
 * 
 * When make an instance you should pass to the constructor key word which will
 * make the library create an object with necessary properetis and access permissions.
 * 
 * Private properties set some of configurations:
 * Host is IP address of the divece which we will command.
 * Two passwords are set for reading and writing.
 * Version of snmp protocol that we will use is version 1.
 * 
 * @author Radoslav Madjev
 * @year 2016
 * @version 1.0 beta
 * 
 * 
 */
class snmp_lib {

    private $snmpInstance;
    private $VERSION = SNMP::VERSION_1;
    private $HOST = '192.168.0.150';
    private $passwordRead = '000000000000';
    private $passwordWrite = 'private';
    private $releys = array(1 => '1.3.6.1.4.1.19865.1.2.1.1.0',
        2 => '1.3.6.1.4.1.19865.1.2.1.2.0');
    private $allPorts = array('3' => '1.3.6.1.4.1.19865.1.2.1.33.0',
        '5' => '1.3.6.1.4.1.19865.1.2.2.33.0');

    /**
     * Create instance of SNMP native class, based on actions that we will
     * perform.
     * 
     * @param string $action
     */
    public function __construct($action) {
        if (in_array($action, array('read', 'write'))) {
            if (strcmp($action, 'read') === 0) {
                $this->_read();
            } else {
                $this->_write();
            }
        }
    }

    /**
     * Create instance with reading permissions.
     */
    private function _read() {
        $this->snmpInstance = new SNMP($this->VERSION, $this->HOST, $this->passwordRead);
    }

    /**
     * Create instance with writing permissions.
     */
    private function _write() {
        $this->snmpInstance = new SNMP($this->VERSION, $this->HOST, $this->passwordWrite);
    }

    /**
     * Close snmp session.
     * 
     * @return boolean
     */
    public function closeSession() {
        return $this->snmpInstance->close();
    }

    /**
     * Set integer 1 as value of defined pin.
     */
    public function activate($relay) {
        $this->snmpInstance->set($this->releys[$relay], 'i', '1');
    }

    /**
     * Set integer 0 as value of defined pin.
     */
    public function deactivate($relay) {
        $this->snmpInstance->set($this->releys[$relay], 'i', '0');
    }

    /**
     * Get pin status of all ports of the module.
     * 
     * @return array
     */
    public function getAllPortsStatus() {
        $allPins = array();
        foreach ($this->allPorts as $number => $port) {
            //get active pins as 8-bit integer of defined port
            $getbits = $this->snmpInstance->get($port);
            $bits = str_replace('INTEGER: ', '', $getbits);
            //get pins status
            $pinsStatus = $this->_getActivePins($bits);
            $allPins[$number] = $pinsStatus;
        }

        return $allPins;
    }

    /**
     * Make bitwise operation which will determine,
     * which are active pins.
     * 
     * @param int $bits
     * @return array
     */
    private function _getActivePins($bits) {

        $bitMapping = array(
            1 => 1,
            2 => 2,
            3 => 4,
            4 => 8,
            5 => 16,
            6 => 32,
            7 => 64,
            8 => 128
        );

        $pinsStatus = array();

        foreach ($bitMapping as $int => $bit) {
            if (($bits & $bit) == $bit) {
                $pinsStatus[$int] = true;
                continue;
            }
            $pinsStatus[$int] = false;
        }

        return $pinsStatus;
    }

}

?>

I have one module that receive SNMP request and send a command to relays. Also these are example scripts that use this lib:
Turn on script:
<?php
require_once 'snmp_lib.php';

$snmp = new snmp_lib('write');
$snmp->activate($getRelayNumber);
$snmp->closeSession();
?>

Turn off script:
<?php
require_once 'snmp_lib.php';

$snmp = new snmp_lib('write');
$snmp->deactivate($getRelayNumber);
$snmp->closeSession();
?>

Script that get all ports status:
<?php
require_once 'snmp_lib.php';

$snmp = new snmp_lib('read');
$getActive = $snmp->getAllPortsStatus();
?>
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.