10.5. SNMP
Протокол SNMP (Simple Network Management Protocol) является протоколом управления сетями. Он описан в документе RFC 1089, а изучение его можно начать на узле <http://www.snmp.com/>. Для того чтобы иметь возможность пользоваться этим протоколом под управлением ОС Unix, необходимо иметь в своем распоряжении библиотеки UCD SNMP. Их можно найти на Web-узле <http://www.net-snmp.org/>.
boolean snmp_get_quick_print()
Функция snmp_get_quick_print возвращает состояние установки quick_print для библиотеки UCD SNMP. Эта установка определяет степень полноты описания объектов. По умолчанию значение quick_print равно FALSE. Подробнее о нем можно узнать в руководстве UCD SNMP. 
snmp_set_quick_print(boolean on)
Функция snmp_set_quick_print делает установки quick_print для библиотеки UCD SNMP. Краткое описание установок quick_print можно найти в описании функции snmp_get_quick_print.
string snmpget(string host, string community, string object, integer timeout, integer retries)
Функция snmpget (листинг 10.24) возвращает значение указанного объекта. Адрес узла может быть записан в виде цифр или имени. Существует возможность задавать сообщество и объект (аргументы community и object). Кроме того, можно указать необязательный тайм-аут в секундах или количество попыток установки соединения.

| Листинг 10.24. Функция snmpget_
<?php
//определите, как долго работала система //при этом она должна возвращать что-то наподобие //Timeticks: (586731977) 67 days, 21:48:39.77 if($snmp = snmpget("test.net-snmp.org", "demopublic", "system.sysUpTime.0"))
{
print($snmp);
}
else
{
print("snmpget failed!");
}

boolean snmpset(string host, string community, string object, string type, string value, integer timeout, integer retries)
Функция snmpset (листинг 10.25) устанавливает значение указанного объекта. Адрес узла может быть записан в виде цифр или имени. В этой функции существует возможность задавать сообщество и объект (аргументы community и object). Аргумент type представляет собой односимвольную строку. Допустимые типы приведены в табл. 10.12. Кроме того, можно указать необязательный тайм-аут в секундах или количество попыток установки соединения.
Операции ввода-вывода на сетевом уровне
Операции ввода-вывода на сетевом уровне
Листинг 10.25. Функция snmpset

<?php
// отобразить текущее значение строки demo $snmp = snmpget("test.net-snmp.org",
"demopublic", "ucdDemoPublicString.0"),-print("$snmp (первоначальное значение)<br>n"); // задать новое значение snmpset("test.net-snmp.org",
"demopublic", "ucdDemoPublicString.0",
"s", "Core PHP Programming"); // отобразить текущее значение строки demo $snmp = snmpget("test.net-snmp.org",
"demopublic", "ucdDemoPublicString.0"),-print("$snmp (текущее значение)^^^"),-
?>

array snmpwalk(string host, string community, string object, integer timeout, integer retries)
Функция snmpwalk (листинг 10.26) возвращает массив всех объектов в дереве, которое берет начало из указанного объекта. Для того чтобы получить все объекты, можно указать пустую строку. Кроме того, можно указать необязательный тайм-аут в секундах или количество попыток установки соединения.

Листинг 10.26. Функция snmpwalk

<?php
//получить все SNMP-объекты
$snmp = snmpwalk("test.net-snmp.org", "demopublic", ""); print_r($snmp);
?>