делаем так выбираем из cacti, устройства которые сейчас в онлайне и по ним ищем интересующий Мас, ищем в двух виланаз 10 и 15, все что нашли выводим. В итоге получается список всех свитчей с описанием адресом номером порта, тегированный или нет, номера вилана и способа запоминания адреса.
Код:
<?php
include_once("utils.php"); include_once("defines.php"); include_once("mysql.php");
//$mac=" 00-17-31-53-30-93 ";
$vlan=array(10,15);
$mac_allowed=trim($mac);
$mac_allowed=strtolower($mac);
$mac_allowed=eregi_replace("-",":",$mac_allowed);
$a=0;
$iuntag=0;
$y=0;
if ( preg_match('/..\:..\:..\:..\:..\:../',$mac_allowed))
{
if(ereg ("([0-9a-f]{1,2})\:([0-9a-f]{1,2})\:([0-9a-f]{1,2})\:([0-9a-f]{1,2})\:([0-9a-f]{1,2})\:([0-9a-f]{1,2})",$mac_allowed,$regs))
{
for ($i = 1; $i <= 6; $i++)
{
$regs[$i]=hexdec($regs[$i]);
}
$result=mysql_query("SELECT description,hostname FROM host where status=3 ORDER BY hostname,description",$LINK_CACTI);
if (mysql_num_rows($result)>0)
{
include("top.php");
echo "
<TABLE ALIGN=center BORDER=0 CELLSPACING=2 CELLPADDING=4 BGCOLOR=black>
<TR BGCOLOR=\"#99dd99\" ><TD ALIGN=center COLSPAN=6>МАС адрес $mac_allowed найден на портах <br>следующих коммутаторов
(проверено".mysql_num_rows($result)."шт):</TD></TR>
<TR ALIGN=center BGCOLOR=\"#99dd99\">
<TD><B>N</B></TD>
<TD><B>Описание</B></TD>
<TD><B>IP свитча</B></TD>
<TD><B>Тип обучения</B></TD>
<TD><B>Порт:Тип</B> </TD>
<TD><B>Vlan</B></TD>
</TR>";
$count=0;
for ($i=0;$i<mysql_num_rows($result);$i++)
{
$row=mysql_fetch_row($result);
$host=trim($row[1]);
foreach ($vlan as $current_vlan)
{
if ($a = snmpget($host, "public", "1.3.6.1.2.1.17.7.1.2.2.1.2.$current_vlan.$regs[1].$regs[2].$regs[3].$regs[4].$regs[5].$regs[6]"))
{
$a = eregi_replace("INTEGER:","",$a);
$ltype=snmpget($host, "public", "1.3.6.1.2.1.17.7.1.2.2.1.3.$current_vlan.$regs[1].$regs[2].$regs[3].$regs[4].$regs[5].$regs[6]");
$ltype = eregi_replace("INTEGER:","",$ltype);
$pmask = 0x1 << 32-$a;
$untag = snmpget($host, "public", "1.3.6.1.2.1.17.7.1.4.3.1.4.$current_vlan");
$untag = eregi_replace("Hex-STRING:","",$untag);
$untag = eregi_replace(" ","",$untag);
$untag = "0x".$untag;
$untag = substr($untag,0,10);
$iuntag=intval($untag,16);
$untag="T";
if ($iuntag & $pmask) $untag="U";
switch($ltype)
{
case '1':$ltype="SecuredPermanent"; break;
case '2':$ltype="Invalid"; break;
case '3':$ltype="Dynamic"; break;
case '4':$ltype="Self"; break;
case '5':$ltype="Permanent"; break;
}
$count++;
if ($untag == "T")
{
echo "<TR ALIGN=left BGCOLOR=\"#dddd99\">";
}
else
{
echo "<TR ALIGN=left BGCOLOR=\"#ff9999\">";
}
echo "<td>$count</td><td>$row[0]</td><td><a href=http://$host>$host</a></td><td>$ltype</td><td>$a:$untag</td><td>$current_vlan</td></t
}
}
}
mysql_free_result($result);
echo "</TABLE>";
include("bottom.php");
}
else
{
echo "no working switches in cacti\n";
}
}
else
{
echo "Incorrect mac format2\n";
}
}else
{
echo "Incorrect mac format\n";
}
?>