SHARE
TWEET

Link Status

a guest Jun 16th, 2017 53 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. //Данные по коммутатору
  3. $sw['ip']="10.0.95.1";  //IP
  4. $sw['com_ro']="public";     //Community Read Only
  5. $sw['com_rw']="private";    //Community Read Write
  6. $port="7";          //Тестируемый порт
  7.  
  8. //Возвращаемые значения
  9. $values[0][1]="Тест кабеля запущен (action)";
  10. $values[0][2]="Тест кабеля в процессе (processing)";
  11. $values[0][3]="Тест кабеля закончен (other)";
  12. $values[1][0]="ok(0)";
  13. $values[1][1]="open(1)";
  14. $values[1][2]="short(2)";
  15. $values[1][3]="open-short(3)";
  16. $values[1][4]="crosstalk(4)";
  17. $values[1][5]="unknown(5)";
  18. $values[1][6]="count(6)";
  19. $values[1][7]="no-cable(7)";
  20. $values[1][8]="other(8)";
  21.  
  22. //Передаем параметры функци описанной ниже и выводим результат на экран
  23. $res=sw_cable_test_snmp($sw,$port,$values);
  24. printf("Результат проверки порта %d на коммутаторе %s:<BR><BR>%s%s",$port,$sw['ip'],$res[0],$res[1]);
  25.  
  26. function sw_cable_test_snmp($sw,$port,$values){
  27.     $ret=array();
  28.     if (is_array($sw)){
  29.     if ($sw['ip']&&$sw['com_ro']&&$sw['com_rw']){
  30.         if (preg_match('/^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$/',$sw['ip'])){
  31.             $mib=sprintf("1.3.6.1.4.1.171.12.58.1.1.1.2.%s",$port);
  32.             $snmp_stat=@snmpget($sw['ip'],$sw['com_ro'],$mib);
  33.             if (preg_match("/^INTEGER:\s+(\d)/",$snmp_stat,$match)){
  34.             if ($match[1]=="0"){
  35.                 $mib2=sprintf("1.3.6.1.4.1.171.12.58.1.1.1.12.%s",$port);
  36.                 $snmp_set=@snmpset($sw['ip'],$sw['com_rw'],$mib2,"i",1);
  37.                 $ret[0].=sprintf("%s<BR>",$values[0][$snmp_set]);
  38.                 sleep(1);
  39.                 $snmp_stat=@snmpget($sw['ip'],$sw['com_ro'],$mib2);
  40.                 if (preg_match("/^INTEGER:\s+(\d)/",$snmp_stat,$m)){
  41.                 if ($m[1]!="2"){
  42.                     $ret[0].=sprintf("%s<BR><BR>",$values[0][$m[1]]);
  43.                     for ($pi=1;$pi<5;$pi++){
  44.                     $mib3=sprintf("1.3.6.1.4.1.171.12.58.1.1.1.%d.%s",$pi+3,$port);
  45.                     $snmp_stat=@snmpget($sw['ip'],$sw['com_ro'],$mib3);
  46.                     $ret[0].="Состояние $pi пары&nbsp;=>&nbsp;";
  47.                     if (preg_match("/^INTEGER:\s+(\d)/",$snmp_stat,$m)){
  48.                         $ret[0].=sprintf("%s<BR>",$values[1][$m[1]]);
  49.                     }else{
  50.                         $ret[0].="неизвестно<BR>";
  51.                     }
  52.                     }
  53.                     for ($pi=1;$pi<5;$pi++){
  54.                     $mib4=sprintf("1.3.6.1.4.1.171.12.58.1.1.1.%d.%s",$pi+7,$port);
  55.                     $snmp_stat=@snmpget($sw['ip'],$sw['com_ro'],$mib4);
  56.                     $ret[0].="Длинна $pi пары&nbsp;=>&nbsp;";
  57.                     if (preg_match("/^INTEGER:\s+(\d+)/",$snmp_stat,$m)){
  58.                         $ret[0].="$m[1] м.<BR>";
  59.                     }else{
  60.                         $ret[0].="неизвестна<BR>";
  61.                     }
  62.                     }
  63.                 }else{
  64.                     $ret[1]="Тест не завершился, попробуйте позднее";
  65.                 }
  66.                 }else{
  67.                 $ret[1]="Результат запуска теста неизвестен";
  68.                 }
  69.             }elseif ($match[1]=="1"){
  70.                 $ret[0]="";
  71.                 $ret[1]="На этом порту коммутатора нет поддержки кабель тестера";
  72.             }else{
  73.                 $ret[0]="";
  74.                 $ret[1]="Ответ от коммутатора неизвестен";
  75.             }
  76.             }else{
  77.             $ret[0]="";
  78.             $ret[1]="Коммутатор не поддерживает функцию тестирование кабеля";
  79.             }
  80.         }else{
  81.         $ret[0]="";
  82.         $ret[1]="Ошибка в IP-адресе коммутатора";
  83.         }
  84.     }else{
  85.         $ret[0]="";
  86.         $ret[1]="Не все необходимые параметры коммутатора заданы";
  87.     }
  88.     }else{
  89.     $ret[0]="";
  90.     $ret[1]="Параметры коммутатора не заданы";
  91.     }
  92.  return $ret;
  93. }
  94.  
  95. ?>
RAW Paste Data
Want to get better at PHP?
Learn to code PHP in 2017
Pastebin PRO Summer Special!
Get 40% OFF on Pastebin PRO accounts!
Top