%s%s",$port,$sw['ip'],$res[0],$res[1]); function sw_cable_test_snmp($sw,$port,$values){ $ret=array(); if (is_array($sw)){ if ($sw['ip']&&$sw['com_ro']&&$sw['com_rw']){ if (preg_match('/^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$/',$sw['ip'])){ $mib=sprintf("1.3.6.1.4.1.171.12.58.1.1.1.2.%s",$port); $snmp_stat=@snmpget($sw['ip'],$sw['com_ro'],$mib); if (preg_match("/^INTEGER:\s+(\d)/",$snmp_stat,$match)){ if ($match[1]=="0"){ $mib2=sprintf("1.3.6.1.4.1.171.12.58.1.1.1.12.%s",$port); $snmp_set=@snmpset($sw['ip'],$sw['com_rw'],$mib2,"i",1); $ret[0].=sprintf("%s
",$values[0][$snmp_set]); sleep(1); $snmp_stat=@snmpget($sw['ip'],$sw['com_ro'],$mib2); if (preg_match("/^INTEGER:\s+(\d)/",$snmp_stat,$m)){ if ($m[1]!="2"){ $ret[0].=sprintf("%s

",$values[0][$m[1]]); for ($pi=1;$pi<5;$pi++){ $mib3=sprintf("1.3.6.1.4.1.171.12.58.1.1.1.%d.%s",$pi+3,$port); $snmp_stat=@snmpget($sw['ip'],$sw['com_ro'],$mib3); $ret[0].="Состояние $pi пары => "; if (preg_match("/^INTEGER:\s+(\d)/",$snmp_stat,$m)){ $ret[0].=sprintf("%s
",$values[1][$m[1]]); }else{ $ret[0].="неизвестно
"; } } for ($pi=1;$pi<5;$pi++){ $mib4=sprintf("1.3.6.1.4.1.171.12.58.1.1.1.%d.%s",$pi+7,$port); $snmp_stat=@snmpget($sw['ip'],$sw['com_ro'],$mib4); $ret[0].="Длинна $pi пары => "; if (preg_match("/^INTEGER:\s+(\d+)/",$snmp_stat,$m)){ $ret[0].="$m[1] м.
"; }else{ $ret[0].="неизвестна
"; } } }else{ $ret[1]="Тест не завершился, попробуйте позднее"; } }else{ $ret[1]="Результат запуска теста неизвестен"; } }elseif ($match[1]=="1"){ $ret[0]=""; $ret[1]="На этом порту коммутатора нет поддержки кабель тестера"; }else{ $ret[0]=""; $ret[1]="Ответ от коммутатора неизвестен"; } }else{ $ret[0]=""; $ret[1]="Коммутатор не поддерживает функцию тестирование кабеля"; } }else{ $ret[0]=""; $ret[1]="Ошибка в IP-адресе коммутатора"; } }else{ $ret[0]=""; $ret[1]="Не все необходимые параметры коммутатора заданы"; } }else{ $ret[0]=""; $ret[1]="Параметры коммутатора не заданы"; } return $ret; } ?>