faq обучение настройка
Текущее время: Пн июл 21, 2025 06:51

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Собрать информацию IP-MAC-Port с 3526
СообщениеДобавлено: Пн май 21, 2007 14:19 
Не в сети

Зарегистрирован: Чт сен 28, 2006 12:07
Сообщений: 220
Откуда: Москва
Наткнулся тут на форуме на ссылку на перловый скрипт, который делает подобную штуку, но, поскольку с перлом совсем никак, то переделать его проблематично, а заставить работать так, как он есть пока не вышло.

Возможно, после подсказок сотрудников D-Link, выйдет запустить этот или написать подобный на bash.

Текст скрипта тут: http://wiki.opennet.ru/DES3526

Смысл в том, что я не нашёл, что реально выводит
Код:
snmpwalk -v2c -c public IP SNMPv2-SMI::mib-2.17.4.3.1.2

Но явно не порты всех доступных свичу маков. Хотя в скрипте используется как раз для получения портов.

Т.е. я вывожу себе нужный вилан, снимаю тег, прописываю в этот сегмент комп, запускаю сканер (для FreeBSD arpscan не помог для сбора маков, пришлось написать простейшую пинговалку. Может кто знает чем ещё из консоли можно быстро и качественно посканить?).

Всё. Я имею на компе пары IP-Mac на нужном свиче.

Осталось собрать пары MAC-Port со свича и сопоставить полученные даные.
Собственно вопрос: как получить пары Mac-Port?
Я так понимаю нужен OID аналога show fdb, потому как show arpentry не выдаёт номера портов.

Ну и, конечно, может, я зря всем этим занимаюсь и у кого-нибудь есть готовое и решение? - с удовольствием буду использовать его :wink:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 21, 2007 14:23 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Пт май 13, 2005 15:49
Сообщений: 20616
Откуда: D-Link, Moscow
Я Вам описание параметров выслал.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн май 21, 2007 17:38 
Не в сети

Зарегистрирован: Чт сен 28, 2006 12:07
Сообщений: 220
Откуда: Москва
Demin Ivan писал(а):
Я Вам описание параметров выслал.

Спасибо Вам и Багирову Руслану (он тоже выслал :wink: )

Вот продукт нашего совместного с G@rik-ом творчества, может, кому пригодится:

Код:
#!/usr/local/bin/bash

#       Очищаем arp-кэш на сканирующем интерфейсе
`arp -d -i re0 -a > /dev/null`
#       Получаем IP хоста с которого сканируем и свича
host=$1
switch=$2
#       Проверяем на наличие обоих полей
if [[ ! "$1" || ! "$2" ]]
then
echo "Usage:"
echo "ip_mac_port <host_ip> <switch_ip>"
exit 1
fi

net=`echo "$host" | awk -F. '{print $1"."$2"."$3}'`
DATE=`date "+%d.%m %H:%M"`

`ifconfig re0 $host/24`
#       Пингуем сегмент
i=1
until [ "$i" -eq "255" ];
do
`ping -t 1 $net.$i > /dev/null`
let "i+=1";
done
#       Получаем связки MAC-Port
`snmpwalk -v2c -c public $switch 1.3.6.1.2.1.17.7.1.2.2.1.2 | awk '{print $1"."$4}' | awk -F. '{ printf "%02x:%02x:%02x:%02x:
%02x:%02x %d\n",$10,$11,$12,$13,$14,$15,$16 }' > ./mac-port`
#       Собираем статистику IP-MAC
`arp -ani re0 | awk '{print $4" "$2}' | sed -e "/$switch/d" | sed -e "/($host)/d" | sed -e "/incomplete/d" | sed -e "s/(//" |
 sed -e "s/)//" > ./mac-ip`
#       Собираем все вместе
while read line
do
mac=`echo "$line" | awk '{print $1}'`
ip=`echo "$line" | awk '{print $2}'`
    while read line2
    do
    mac2=`echo "$line2" | awk '{print $1}'`
    port=`echo "$line2" | awk '{print $2}'`
    if [ "$mac2" == "$mac" ]
    then
    `mkdir ./switches/"$switch" &> /dev/null`
    echo "$ip $mac $port" >> ./switches/"$switch"/"$DATE"
    fi
    done < ./mac-port
done < ./mac-ip


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт май 22, 2007 11:43 
Не в сети

Зарегистрирован: Сб янв 27, 2007 21:17
Сообщений: 27
Откуда: Пушкино
Люди, посмотрите в сторону cacti и плагина к нему mactrack
http://forums.cacti.net/viewforum.php?f=15
очень удобная штука, здесь
http://forums.cacti.net/viewtopic.php?p=97537#97537
есть модули для сбора инфы с dlink 3xxx, далее все это засовывается в базу и на основе данных, полученных с рутера - строятся связки ip/mac на всех портах всех свичей, которые мониторятся, при этом так же надо мониторить и сам рутер, чтобы получать реальные связки ip/mac.
далее просто ищете нужный mac или ip или что угодно и находите где кто и с какими данными был.
сбор информации идет периодически в зависимости от настроек, данные хранятся тоже в зависимости от настроек, например 2 недели... и сделать выборку можно за любой имеющийся период... в общем очень удобно, рекомендую.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт май 24, 2007 16:38 
Не в сети

Зарегистрирован: Чт сен 28, 2006 12:07
Сообщений: 220
Откуда: Москва
KAA76 писал(а):
Люди, посмотрите в сторону cacti и плагина к нему mactrack
http://forums.cacti.net/viewforum.php?f=15
очень удобная штука, здесь
http://forums.cacti.net/viewtopic.php?p=97537#97537

Обязательно попробую - тем более давно в планах было освоить какти, но пока представляю ещё пару вариантов массового сбора статистики.
Подойдёт тем, кто в качестве роутеров использует DES-3828.

Первый ОЧЕНЬ медленный и предназначен для тех, у кого аллергия на PHP. Всё на BASH:
Код:
#!/usr/local/bin/bash
#       Перечисляем роутеры DES-3828
for router in 192.168.1.1 192.168.1.2 192.168.1.3
do
echo "$router"
#       Собираем с 3828 связки IP-MAC
#       sed-ом убираем не интересующие нас сегменты и маки.
`snmpwalk -v2c -c public $router IP-MIB::ipNetToMediaPhysAddress | awk '{print $1"."$4}' | awk -F. '{print $3"."$4"."$5"."$6
"."$7}' | sed -e "/192\.168/d" | sed -e "/ff:ff:ff:ff:ff:ff/d" | sed -e "s/:/./g" | awk -F. '{pri
ntf "%d.%d.%d.%d %02s:%02s:%02s:%02s:%02s:%02s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9,$10}' > ./test1/ip_mac`
while read switch
    do
    echo "$switch"
#       Собираем с 3525 связки MAC-Port
#       sed-ом убираем не интересующие нас порты
    `snmpwalk -v2c -c public $switch 1.3.6.1.2.1.17.7.1.2.2.1.2 | awk '{print $1"."$4}' | sed -e "/\.23$/d" | sed -e "/\.0$/
d" | awk -F. '{ printf "%02x:%02x:%02x:%02x:%02x:%02x %d\n",$10,$11,$12,$13,$14,$15,$16 }' > ./test1/mac_port`
#       Ищем совпадающие MAC-адреса и выводим их с соответствующими IP и Port
       while read line
       do
       mac=`echo "$line" | awk '{print $2}'`
       ip=`echo "$line" | awk '{print $1}'`
           while read line2
           do
           mac2=`echo "$line2" | awk '{print $1}'`
           port=`echo "$line2" | awk '{print $2}'`
           if [ "$mac2" == "$mac" ]
           then
           `mkdir ./switches/"$switch" &> /dev/null`
           echo "$ip $mac $port" >> ./switches/"$switch"/"$DATE"
           fi
           done < ./test1/mac_port
       done < ./test1/ip_mac

done < ./switch_net_$router
done


В файле ./switch_net_$router пока просто перечисление IP свичей (1 IP - 1 строчка), о которых знает 3828. Позже, поскольку у нас тут небольшой бардачёк с портами, будут ещё перечислены порты-исключения для каждого свича.

Второй на порядок быстрее. Кусок PHP написан не мной.

Код:
#!/usr/local/bin/bash
#       Перечисляем роутеры DES-3828
for router in 192.168.1.1 192.168.1.2 192.168.1.3
do
echo "$router"
#       Собираем с 3828 связки IP-MAC
#       sed-ом убираем не интересующие нас сегменты и маки.
`snmpwalk -v2c -c public $router IP-MIB::ipNetToMediaPhysAddress | awk '{print $1"."$4}' | awk -F. '{print $3"."$4"."$5"."$6
"."$7}' | sed -e "/192\.168/d" | sed -e "/ff:ff:ff:ff:ff:ff/d" | sed -e "s/:/./g" | awk -F. '{pri
ntf "%d.%d.%d.%d %02s:%02s:%02s:%02s:%02s:%02s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9,$10}' > ./test1/ip_mac`
while read switch
    do
    echo "$switch"
#       Собираем с 3525 связки MAC-Port
#       sed-ом убираем не интересующие нас порты
    `snmpwalk -v2c -c public $switch 1.3.6.1.2.1.17.7.1.2.2.1.2 | awk '{print $1"."$4}' | sed -e "/\.23$/d" | sed -e "/\.0$/
d" | awk -F. '{ printf "%02x:%02x:%02x:%02x:%02x:%02x %d\n",$10,$11,$12,$13,$14,$15,$16 }' > ./test1/mac_port`
    php -n -f ./parser ./test1/ip_mac ./test1/mac_port $switch

done < ./switch_net_$router
done


а вот, и parser:
Код:
#!/usr/local/bin/php
<?


if($_SERVER['argc']!=4)
{
        echo "\nUsage: scrpt_name ip_mac mac_port switch_ip";
        exit;
}

$ip_mac = $_SERVER['argv'][1];
$mac_port = $_SERVER['argv'][2];
$switch_ip = $_SERVER['argv'][3];


if(!file_exists($ip_mac))
{
        echo "\nError: $ip_mac not exists";
        exit;
}

if(!file_exists($mac_port))
{
        echo "\nError: $mac_port not exists";
        exit;
}


$rez = array();

$f = fopen($ip_mac,"r") or die("\nERROR: Cant open $ip_mac");
while(!feof($f))
{
        $str = trim(fgets($f));
        $strar = split(" ",$str);

        $ip= $strar[0];
        $mac= $strar[1];
        if(isset($ip) && isset($mac)) $rez[$mac]['IP']=$ip;
}
fclose($f);


$f = fopen($mac_port,"r") or die("\nERROR: Cant open $mac_port");
while(!feof($f))
{
        $str = trim(fgets($f));
        $strar = split(" ",$str);

        $mac= $strar[0];
        $port= $strar[1];
        if(isset($mac) && isset($port)) $rez[$mac]['port']=$port;
}
fclose($f);


$dir = "/root/switches/".$switch_ip."/";
$filename = date("d.m H:i");
if(!file_exists($dir))
 mkdir($dir);

$out = fopen($dir.$filename,"w") or die("\nERROR: cant open ".$dir.$filename);

foreach ($rez as $mac=>$value)
{
        if(isset($value['IP']) && isset($value['port']))
        {
            $str = $value['IP']." ".$mac." ".$value['port'];
            fputs($out,$str."\n");
        }
}
fclose($out);


?>


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Собрать информацию IP-MAC-Port с 3526
СообщениеДобавлено: Ср июн 13, 2012 10:38 
Не в сети

Зарегистрирован: Пн ноя 23, 2009 17:14
Сообщений: 16
подскажите пожалуйста софтину для сбора такой информации, нужно привести в порядок запущенную сеть. Свичи 3526 и 3200-28


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 38


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB