Untitled
<?php // Введіть дані для SNMP-запиту $host = "172.20.253.10"; // IP-адреса SNMP-пристрою $community = "KiM-PuB_RO"; // SNMP community string $vlanid = "4011"; // VLAN ID // OIDs $macOid = "iso.3.6.1.2.1.17.7.1.2.2.1.2"; // dot1qTpFdbPort $snmp_macOid = snmprealwalk($host, $community, $macOid . "." . $vlanid); #var_dump($snmp_macOid); $macMap = []; foreach ($snmp_macOid as $index => $value) { $index = str_replace($macOid . "." . $vlanid . ".", '', $index); ########## переробка в мак від октетного вигляду $octets = explode('.', $index); $macAddress = array_map(function($octet) { return str_pad(dechex($octet), 2, '0', STR_PAD_LEFT); }, $octets); $index = strtoupper(implode(':', $macAddress)); $value = str_replace("INTEGER: ", '', $value); // Витягуємо порт $macMap[$index] = $value; } var_dump($macMap); $i = 0; foreach ($macMap as $mac_address => $value) { # print($vlanid . "\n"); # print($mac_address . "\n"); $id = $value; # print($id . "\n"); $iFindex = snmpwalk($host, $community, "iso.3.6.1.2.1.17.1.4.1.2." . $id); $iFindex = str_replace("INTEGER: ", '', $iFindex[0]); # print($iFindex . "\n"); $portName = snmpwalk($host, $community, "iso.3.6.1.2.1.31.1.1.1.1." . $iFindex); $portName = str_replace(['STRING: ', '"'], '', $portName[0]); // Витягуємо порт # print($portName . "\n"); $portDescription = snmpwalk($host, $community, "iso.3.6.1.2.1.31.1.1.1.18." . $iFindex); $portDescription = str_replace(['STRING: ', '"'], '', $portDescription[0]); // Витягуємо порт # print($portDescription . "\n"); print($vlanid . " " . $mac_address . " " . $portName . " " . $portDescription . "\n"); $data[$i] = [ 'vlanid' => $vlanid, 'mac_address' => $mac_address, 'port_name' => $portName, 'port_description' => $portDescription ]; #var_dump($data); $i=$i+1; } var_dump($data); #if KIM-INTERCONNET && anyone = good. $kimInterconnectExists = false; $anyOtherExists = false; foreach ($data as $record) { if ($record['port_description'] === 'KIM-INTERCONNET') { $kimInterconnectExists = true; } else { $anyOtherExists = true; } // Якщо обидві умови виконані, зупиняємо цикл if ($kimInterconnectExists && $anyOtherExists) { break; } } // Виконуємо дію, якщо умови виконані if ($kimInterconnectExists && $anyOtherExists) { echo "KIM-INTERCONNET існує і є ще один запис"; } else { echo "Умови не виконані"; }
Leave a Comment