Форумы портала PHP.SU » » Работа с сетью » про snmpwalk()

Страниц (1): [1]
 

1. aksktis - 30 Января, 2012 - 13:22:14 - перейти к сообщению
Добрый день.
вопрос в следующем:
необходимо реализовать сбор некоторой информации со свитчей (3Com + Cisco)

как собираю:

PHP:
скопировать код в буфер обмена
  1.  
  2. $root_ip = '192.168.0.33';
  3. $a = snmpwalkoid($root_ip, "j1579y", "SNMPv2-SMI::mib-2.17.4.3.1.2");
  4. print_r($a);
  5. die();
  6.  



что на выходе:

Спойлер (Отобразить)




но если собирать эту информация через NET-SNMP командой:
$ snmpwalk -Cc -c j1579y -v 1 192.168.0.33 SNMPv2-SMI::mib-2.17.4.3.1.2

то вывод будет:
Спойлер (Отобразить)


что и требуется
собственно результат получен за счет ключа "-Сс" (do not check returned OIDs are increasing)

Вопрос: как заставить функцию php snmpwalk() не проверять OIDы так же как это делает NET-SNMP

альтернативный вариант - юзать net-snmp через shell_exec, но он не желателен.

заранее спасибо за помощь

P.S. кстати, проблема наблюдается далеко не на всех свитчах
2. vlad5503 - 02 Июня, 2017 - 04:14:36 - перейти к сообщению
На днях обновил пакеты на freebsd 10.1. На этом серваке работает мониторинг GPON от Huawey. Так вот после обновы скрипт php
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. header ("Content-Type: text/html; charset=koi8-r");
  3. $ip = "10.11.104.2";
  4. $ro = "maypass";
  5. $NOID = "No Such Instance currently exists at this OID";
  6. #$pon = "4194320384";
  7. //clear_file_ofonu.txt
  8. file_put_contents("./ofonu.txt", "");
  9. echo "<br><p>Обнаруженные, но не прописанные ONT в системе:</p>";
  10.  
  11. $A = snmpwalk("$ip", "$ro", "1.3.6.1.4.1.2011.6.128.1.1.2.48.1.2");
  12.    for ($i=0; $i<count($A); $i++) {
  13. $A2 = str_replace("Hex-STRING: ", "sn=", $A[$i]);
  14. $A3 = str_replace(" ", "", $A2);
  15.    if ($A3 != $NIOD) {
  16.        $fp = fopen ("./ofonu.txt", "a");
  17.        fwrite($fp, "$A3\n");
  18.        fclose($fp);
  19. $file_array = file ("ofonu.txt");
  20. $num_str = count($file_array);
  21. echo "<p>$num_str $A3</p>";
  22.    } else {
  23.        echo "<br><p><a href='./ofonu.txt'>Обнаруженных и не прописанных в системе нет.</a></p>";
  24.    }
  25.    }
  26. echo "<br><a href='http://gpon.maydome.ru/MA5683.html'> Вернуться.</a>";
  27.  
  28. ?>

стал выдавать сообщение такое:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning: snmpwalk(): Error in packet at 'SNMPv2-SMI::enterprises.2011.6.128.1.1.2.48.1.2': (noSuchName) There is no such variable name in this MIB. in /usr/local/www/домен/ter.php on line 16
  2.  

Этот же запрос отправляю из консоли или с помощью скрипта shell получаю два варианта ответа, в соответствии от ситуации на оборудовании.
Есть виртуалка freebsd 10.1 на которой мониторинг создавался. Виртуалка не имеет обновлений пакетов. Этот же скрипт работает без ошибок.

Сверил пакеты..
на обновленной стоит:
CODE (htmlphp):
скопировать код в буфер обмена
  1. # pkg info |grep snmp
  2. net-snmp-5.7.3_14              Extendable SNMP implementation
  3. php56-snmp-5.6.30              The snmp shared extension for php


на виртуалке стоит:
CODE (htmlphp):
скопировать код в буфер обмена
  1. # pkg info |grep snmp
  2. net-snmp-5.7.3_11              Extendable SNMP implementation
  3. php56-snmp-5.6.0_1             The snmp shared extension for php
  4.  

Чтение описаний про php версии мне не помогло...
Подскажите как подправить ситауцию.. На что мне надо обратить внимание, чтоб понять где не так работает...
3. Sail - 02 Июня, 2017 - 08:02:29 - перейти к сообщению
vlad5503 пишет:
Чтение описаний про php версии мне не помогло...
... На что мне надо обратить внимание, чтоб понять где не так работает...

Тут пишут (FAQ:Applications_09), что к строчке-идентификатору команды надо добавить '.0'
А в общем - определите ip хоста, обращение к которому вызывает это предупреждение и тестируйте его на предмет реакции на эту команду из консоли... ну или в документацию гляньте, где его mib прописана.
4. vlad5503 - 02 Июня, 2017 - 08:50:36 - перейти к сообщению
Попробовал Ваш вариант подсказки. Выдает ошибку...
CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning: snmpwalk(): Error in packet at 'SNMPv2-SMI::enterprises.2011.6.128.1.1.2.48.1.2.0': (noSuchName) There is no such variable name in this MIB. in /usr/local/www/домен/ter.php on line 16
  2.  


Из консоли:
CODE (htmlphp):
скопировать код в буфер обмена
  1. # snmpwalk -v2c -c maypass 10.11.104.2 1.3.6.1.4.1.2011.6.128.1.1.2.48.1.2.0
  2. SNMPv2-SMI::enterprises.2011.6.128.1.1.2.48.1.2.0 = No Such Instance currently exists at this OID
  3.  

Что говорит, что нет не зарегестрированных терминалах на линиях. Т.е. это один из верных ответов.

 

Powered by ExBB FM 1.0 RC1