Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //Данные по коммутатору
- $sw['ip']="10.0.95.1"; //IP
- $sw['com_ro']="public"; //Community Read Only
- $sw['com_rw']="private"; //Community Read Write
- $port="7"; //Тестируемый порт
- //Возвращаемые значения
- $values[0][1]="Тест кабеля запущен (action)";
- $values[0][2]="Тест кабеля в процессе (processing)";
- $values[0][3]="Тест кабеля закончен (other)";
- $values[1][0]="ok(0)";
- $values[1][1]="open(1)";
- $values[1][2]="short(2)";
- $values[1][3]="open-short(3)";
- $values[1][4]="crosstalk(4)";
- $values[1][5]="unknown(5)";
- $values[1][6]="count(6)";
- $values[1][7]="no-cable(7)";
- $values[1][8]="other(8)";
- //Передаем параметры функци описанной ниже и выводим результат на экран
- $res=sw_cable_test_snmp($sw,$port,$values);
- printf("Результат проверки порта %d на коммутаторе %s:<BR><BR>%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<BR>",$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<BR><BR>",$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<BR>",$values[1][$m[1]]);
- }else{
- $ret[0].="неизвестно<BR>";
- }
- }
- 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] м.<BR>";
- }else{
- $ret[0].="неизвестна<BR>";
- }
- }
- }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;
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement