<?php // --- Начало модуля: 'Таблица коммутации' --- // Таблица коммутации для всех vlan $dot1dTpFdbAddress = @snmpwalkoid($ip, $rcomm, ".1.3.6.1.2.1.17.7.1.2.2.1.2", $timeout, $retries); // Статус записей $dot1dTpFdbStatus = @snmpwalkoid($ip, $rcomm, ".1.3.6.1.2.1.17.7.1.2.2.1.3", $timeout, $retries); // Список названий vlan $dot1qTpVlanStaticName = @snmpwalkoid($ip, $rcomm, ".1.3.6.1.2.1.17.7.1.4.3.1.1", $timeout, $retries); asort($dot1dTpFdbAddress); // Оставляем в ключе массива только нужную информацию $dot1dTpFdbAddress = keyscutvlanmac($dot1dTpFdbAddress); // Оставляем в ключе массива только нужную информацию $dot1dTpFdbStatus = keyscutvlanmac($dot1dTpFdbStatus); // Оставляем в ключе массива только нужную информацию $dot1qTpVlanStaticName = keyscut($dot1qTpVlanStaticName); // Создаем шапку FDB таблицы $swtable = "\n<table border=1 width='100%'>"; $swtable .= "\n\t<tr class='head'>\n\t\t<td class='tablehead' colspan=5>Таблица коммутации</td>\n\t</tr>"; $swtable .= "\n\t<tr class='head'>\n\t\t<td class='tablehead'>VID</td>\n\t\t"; $swtable .= "<td class='tablehead'>Название vlan</td>\n\t\t<td class='tablehead'>MAC-адрес</td>\n\t\t"; $swtable .= "<td class='tablehead'>Порт</td>\n\t\t<td class='tablehead'>Тип</td>"; //Выводим таблицу FDB reset($dot1dTpFdbAddress); for ($q = 0; $q < count($dot1dTpFdbAddress); $q++) { $stat_key = key($dot1dTpFdbAddress); $entry_stat = "unknown"; if ($dot1dTpFdbStatus[$stat_key] == 1) { $entry_stat = "Other/Unknown (Возможно, заблокирован IMP)"; } if ($dot1dTpFdbStatus[$stat_key] == 2) {
$cableDiagPair1Status[$pi - 1] = @snmpget($ip, $rcomm, ".1.3.6.1.4.1.171.12.58.1.1.1.4." . $pi, $timeout, $retries); // Статус 2-й пары $cableDiagPair2Status[$pi - 1] = @snmpget($ip, $rcomm, ".1.3.6.1.4.1.171.12.58.1.1.1.5." . $pi, $timeout, $retries); // Длина 1-й пары $cableDiagPair1Length[$pi - 1] = @snmpget($ip, $rcomm, ".1.3.6.1.4.1.171.12.58.1.1.1.8." . $pi, $timeout, $retries); // Длина 2-й пары $cableDiagPair2Length[$pi - 1] = @snmpget($ip, $rcomm, ".1.3.6.1.4.1.171.12.58.1.1.1.9." . $pi, $timeout, $retries); } // Список названий vlan $dot1qTpVlanStaticName = @snmpwalkoid($ip, $rcomm, ".1.3.6.1.2.1.17.7.1.4.3.1.1", $timeout, $retries); // Список нетегированных портов в вланах $dot1qVlanStaticUntaggedPorts = @snmpwalkoid($ip, $rcomm, ".1.3.6.1.2.1.17.7.1.4.3.1.4", $timeout, $retries); // Оставляем в ключе массива только нужную информацию $dot1qTpVlanStaticName = keyscut($dot1qTpVlanStaticName); // Оставляем в ключе массива только нужную информацию $dot1qVlanStaticUntaggedPorts = keyscut($dot1qVlanStaticUntaggedPorts); // Заполняем массив с vlan'ами пустотой, иначе array_splice глючит безбожно $untag_vlan = array_fill(0, $uniqueportscount[$ModelType], ''); for ($t = 0; $t < count($dot1qTpVlanStaticName); $t++) { $vlan_name = $dot1qTpVlanStaticName[key($dot1qTpVlanStaticName)]; $vlan_name = str_ireplace('"', "", $vlan_name); $vid = key($dot1qTpVlanStaticName); $uports = $dot1qVlanStaticUntaggedPorts[$vid]; $uports = stripstr($uports); // Чит для 3526, когда вместо hex-строки возвращается string if (strlen($uports) == 4) { $uports = strtohex($uports); } $uports = decbin(hexdec($uports)); while (strlen($uports) < 32) { $uports = "0" . $uports;