%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;
}
?>