[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