Untitled

 avatar
unknown
plain_text
a month ago
2.8 kB
4
Indexable
<?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 "Умови не виконані";
}
Editor is loading...
Leave a Comment