[Moscow.pm] Взрыв мозга или занимательная топология
Kaltashkin Eugene
zhecka на gmail.com
Сб Ноя 24 12:35:38 PST 2007
Andrey пишет:
> Повторяем шаги 1-3 пока не останется только один. Всё, задача решена.
> PS: если на шаге 3 у нас нашлось несколько коммутаторов B, это значит в
> сети есть "скрытый свитч C", в таблицу пишем A => C, B1 => C, B2 => C,
> B3 => C
>
получил интересные результаты.
вот такая структура.
%result = ();
$dbh->do('truncate table t2');
$dbh->do("insert into t2 select * from mactable");
$dbh->do("delete from t2 where macaddr not in (select macaddr from
mactable where status='private')");
$sth=$dbh->prepare("select switch,port,count(*) from t2 where status is
null group by switch,port");
$sth->execute;
while(my($sw,$port,$cou)= $sth->fetchrow)
{
my $nport = $sw.'_'.$port;
$result{$nport} = $cou;
}
foreach my $ip (@switches)
{
$sth=$dbh->prepare("
select switch,port,count(*) from t2 where status is null and macaddr not
in (select macaddr from t2 where switch='$ip' and sta
tus = 'private') group by switch,port
");
$sth->execute;
print $ip,"\t";
my %tmpres = ();
while(my($sw,$port,$cou)= $sth->fetchrow)
{
my $nport = $sw.'_'.$port;
$tmpres{$nport} = $cou;
}
@uniq = keys %{{%result,%tmpres}};
foreach my $key (@uniq)
{
my($ipt,$port) = split (/\_/,$key);
$tmpres{$key} = 0 if(!$tmpres{$key});
print $ipt,":",$port,"\t",$result{$key},"\t",$tmpres{$key} if
($tmpres{$key} == 0);
}
print "\n";
}
выдаёт интересные данные. часть данных правильна, но подключение между
26 и 27 свичом отсутствует :(
в таблице столбцы: свитч, к какому свичу подключен к какому порту,
количество устройств до исключения, количество после исключения.
10.6.204.21 10.6.204.26:4 12 0
10.6.204.22 10.6.204.26:5 10 0
10.6.204.23 10.6.204.26:9 12 0
10.6.204.24 10.6.204.26:7 8 0
10.6.204.25 10.6.204.26:14 17 0
10.6.204.26
10.6.204.27
10.6.204.28 10.6.204.27:26 19 0
10.6.204.29 10.6.204.26:23 3 0
10.6.204.30 10.6.204.26:18 13 0
10.6.204.31
10.6.204.32 10.6.204.26:16 6 0
10.6.204.33 10.6.204.26:13 14 0
10.6.204.34 10.6.204.26:8 11 0
на самом деле
10.6.204.27 10.6.204.26:25 36 19
А как раз 19 это порты 10.6.204.28 который стоит за 10.6.204.27.
тоже самое с 10.6.204.31
10.6.204.31 10.6.204.26:6 19 1
Я снова с ступоре :(
Подробная информация о списке рассылки Moscow-pm