The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Статистика по включенным компьютерам в сети."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Статистика по включенным компьютерам в сети." 
Сообщение от Сергей Петров emailИскать по авторуВ закладки on 05-Апр-05, 19:47  (MSK)
Есть задача - нужно мониторить, когда какой компьютер в сети включен, а когда выключен. Нет ничего проще, чем написать что-нить вроде

nmap -sP 192.168.1.* > /dev/null; arp -a|grep ether|awk {'print $2'}|tr -d "()"

Потом все это причесать сделать так, что это записывалось в базу данных, запихнуть в крон и сделать нормальный вывод статистики.

********************************
Вопрос в следующем:
nmap - это мировое зло. если я записывать в крон эту команду, то раз в n минут создается паразитная нагрузка на сеть. Конечно она небольшая, но все равно есть, а очень хотелось бы, чтобы ее не было.

Есть несколько вариантов, но у всех есть свои недостатки

1. Не делать nmap а просто смотреть по arp таблице. Тут недосток в том, что компьютер может долго не делать никакую сетевую активность, тогда в логах он будет как будто выключен.

2. Сделать список машин и пинговать только их. Тут проблема в том, что может повявиться новая машина, но программой сбора статистики она не будет замечена.


Вообщем буду очень рад любым мыслям по этому поводу!

Заранее спасибо за ответ и спасибо, что прочитали такое большое сообщение. =)

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Статистика по включенным компьютерам в сети." 
Сообщение от MaximKuznetsov Искать по авторуВ закладки on 05-Апр-05, 22:23  (MSK)
>Есть задача - нужно мониторить, когда какой компьютер в сети включен, а
>когда выключен. Нет ничего проще, чем написать что-нить вроде

Интересует именно алгоритм ?
Хватаем все пакеты приходящие на хост,
  если источника нет в куче, добавляем и пишем в лог что появился
  если известен, обновляем метку времени,
  периодически смотрим у кого слишком старая метка времени, того исключаем    из кучи и пишем в лог, что отключился.
УСЁ..

прим1. хватать можно только заголовки пакетов, была-бы адресная часть
прим2. перевод хоста с промиск вряд-ли поможет, современные свичи и так отрежут всё лишнее
прим3. алг. настолько элементарен, что как правило ищутся более сложные решения

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Статистика по включенным компьютерам в сети." 
Сообщение от dimus Искать по авторуВ закладки(??) on 06-Апр-05, 15:36  (MSK)
Почему бы просто не пинговать все машины в подсети и смотреть, какие откликаются.

Что-то вроде этого. Можно легко сделать на shell-script или C/C++

i = 1;
while( i < 255 )
{
   sprintf( ip_addr, "192.168.0.%d", i );
   if( call_ping( ip_addr ) )
   {
     printf( "Host %s is up\n", ip_addr );
   }
}

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Статистика по включенным компьютерам в сети." 
Сообщение от Сергей Петров emailИскать по авторуВ закладки on 06-Апр-05, 16:12  (MSK)
>Почему бы просто не пинговать все машины в подсети и смотреть, какие
>откликаются.
>Что-то вроде этого. Можно легко сделать на shell-script или C/C++
>i = 1;
>while( i < 255 )
>{
>   sprintf( ip_addr, "192.168.0.%d", i );
>   if( call_ping( ip_addr ) )
>   {
>     printf( "Host %s is up\n", ip_addr );
>
>   }
>}

Спасибо большое за твой ответ, но только что твой вариант, что использование nmap - дает дополнительную нагрузку на сеть, котрой хотелось бы избежаить (если это возможно, конечно)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Статистика по включенным компьютерам в сети." 
Сообщение от fa emailИскать по авторуВ закладки(??) on 06-Апр-05, 17:35  (MSK)
>Почему бы просто не пинговать все машины в подсети и смотреть, какие
>откликаются.
>
>Что-то вроде этого. Можно легко сделать на shell-script или C/C++
>
>i = 1;
>while( i < 255 )
>{
>   sprintf( ip_addr, "192.168.0.%d", i );
>   if( call_ping( ip_addr ) )
>   {
>     printf( "Host %s is up\n", ip_addr );
>
>   }
>}

А что делать, если народ фаерволится?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Статистика по включенным компьютерам в сети." 
Сообщение от Сергей Петров emailИскать по авторуВ закладки on 06-Апр-05, 16:10  (MSK)
>Интересует именно алгоритм ?

Точно! =)

>Хватаем все пакеты приходящие на хост,
>если источника нет в куче, добавляем и пишем в лог
>что появился  если известен, обновляем метку времени,
>периодически смотрим у кого слишком старая метка времени,
>того исключаем
>из кучи и пишем в лог, что отключился.
>УСЁ..

Значит так. Вообщем эта система включенных-выключенных компов будет сидеть на единственном сервере в сети - на той машине, которая у всех прописана гойтом и которая раздает всем инет. То есть, можно предположить, что машины все время будут что-то хотеть от этого сервера и сервер будет все время ловить пакеты от них.

Честно говоря, я не очень понимаю, зачем выпендриваться-ловоить пакеты. Если пакет пришел, то сервер автоматически апгрейдет свою таблицу мак адресов. То есть можно просто смотреть таблицу. (пожалуйста, поправьте меня если я не прав). Простблема в другом - если мы будем раз в n минут смотреть эту таблицу - есть вероятность, что мы попадем в том момент, когда компьютер включен, но записть в арп таблице на сервере устарела и в логах он будет показан как выключенный (именно для этого в скрипте, который я приводил в первом посте сначала идет nmap, чтобы было какое-то общение с машинами и арп таблица обновилась). Но, как я уже говорил - nmap - это зло - нафиг нужна дополнительная нагрузка на сеть если ее можно избежать (я очень надеюсь, что ее можно избежать =)

>прим1. хватать можно только заголовки пакетов, была-бы адресная часть
>прим2. перевод хоста с промиск вряд-ли поможет, современные свичи и так >отрежут всё лишнее

Извини, 2-ое примечание немножко не понял, может быть "в" промиск?

>прим3. алг. настолько элементарен, что как правило ищутся более сложные >решения

Если не сложно, пожалуйста, расскажи об альтернативных вариантах?

Заранее большое спасибо.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Статистика по включенным компьютерам в сети." 
Сообщение от Maxim Kuznetsov Искать по авторуВ закладки on 06-Апр-05, 17:12  (MSK)
>>Интересует именно алгоритм ?
>
>Точно! =)
>
>>Хватаем все пакеты приходящие на хост,
>>если источника нет в куче, добавляем и пишем в лог
>>что появился  если известен, обновляем метку времени,
>>периодически смотрим у кого слишком старая метка времени,
>>того исключаем
>>из кучи и пишем в лог, что отключился.
>>УСЁ..
>
>Значит так. Вообщем эта система включенных-выключенных компов будет сидеть на единственном сервере
>в сети - на той машине, которая у всех прописана гойтом
>и которая раздает всем инет. То есть, можно предположить, что машины
>все время будут что-то хотеть от этого сервера и сервер будет
>все время ловить пакеты от них.
>
>Честно говоря, я не очень понимаю, зачем выпендриваться-ловоить пакеты. Если пакет пришел,
это не то чтобы выпендриваться, просто так проще..я для таких целей использую таргет ULOG в iptables и _очень_ доволен результатом.
>то сервер автоматически апгрейдет свою таблицу мак адресов. То есть можно
>просто смотреть таблицу. (пожалуйста, поправьте меня если я не прав).  
arp таблица это только если все машины в одной локалке..
(и arpwatch тут может помоч)
а как только появится сеть отделенная роутером - все пакеты из нее будешь получать с одним мак`ом.., плюс таким алгоритмом Вы можете следить и за активностью внешних машин и живостью каналов(с некоторой додумкой/доработкой).

>в другом - если мы будем раз в n минут смотреть
>эту таблицу - есть вероятность, что мы попадем в том момент,
>когда компьютер включен, но записть в арп таблице на сервере устарела
>и в логах он будет показан как выключенный (именно для этого
>в скрипте, который я приводил в первом посте сначала идет nmap,
>чтобы было какое-то общение с машинами и арп таблица обновилась). Но,
>как я уже говорил - nmap - это зло - нафиг
>нужна дополнительная нагрузка на сеть если ее можно избежать (я очень
>надеюсь, что ее можно избежать =)
>
>>прим1. хватать можно только заголовки пакетов, была-бы адресная часть
>>прим2. перевод хоста с промиск вряд-ли поможет, современные свичи и так >отрежут всё лишнее
>
>Извини, 2-ое примечание немножко не понял, может быть "в" промиск?
да - конечно-же 'В' - просто опечатался
>>прим3. алг. настолько элементарен, что как правило ищутся более сложные >решения
>
>Если не сложно, пожалуйста, расскажи об альтернативных вариантах?
а это как раз упомянутые 'пинговать всех', запускать nmap, поставить каждому клиенту по агенту etc..

>Заранее большое спасибо.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Статистика по включенным компьютерам в сети." 
Сообщение от Y emailИскать по авторуВ закладки(??) on 06-Апр-05, 16:09  (MSK)
fping в этой ситуации очень удобная вещь
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Статистика по включенным компьютерам в сети." 
Сообщение от Сергей Петров emailИскать по авторуВ закладки on 06-Апр-05, 16:18  (MSK)
>fping в этой ситуации очень удобная вещь

Спасибо большое! Не знал, что есть такая утилитка.

Но имхо нет никакой разницы, что использовать - nmap, fping или небольшой сприпт с ping-ом. Все равно создается дополнительная нагрузка на сеть, чего бы очень хотелось избежать.

Мысли вслух - у нас может быть 2 варинта общения с сетью - активное (то есть что то делать) и пассивное (то есть только слушать).

Соответственно пассивное не дает никакой дополнительной нагрузки на сеть, а активное дает. То есть в я бы хотел просто слушать сеть, но думаю, что это не очень рационально - некоторые машины могут долгое время "молчать" и тогда они будут выглядеть как выключенные.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Статистика по включенным компьютерам в сети." 
Сообщение от Z0termaNN emailИскать по авторуВ закладки(??) on 06-Апр-05, 23:02  (MSK)
>>fping в этой ситуации очень удобная вещь
>
>Спасибо большое! Не знал, что есть такая утилитка.

вообще-то достаточно ping послать по broadcast адресу (если конечно все
машины в одном сегменте) и ловить reply.
>
>Но имхо нет никакой разницы, что использовать - nmap, fping или небольшой
>сприпт с ping-ом. Все равно создается дополнительная нагрузка на сеть,

ты что обалдел ? какая нагрузка на сеть ? от пары тысяч пакетов в час ?

если уж тебе совсем слиплось смотреть кто сейчас в сети, то поставь
себе, например DECnet, и  будет тебе счастье

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Статистика по включенным компьютерам в сети." 
Сообщение от bessarabov emailИскать по авторуВ закладки(ok) on 07-Апр-05, 01:05  (MSK)
>вообще-то достаточно ping послать по broadcast адресу (если конечно все
>машины в одном сегменте) и ловить reply.

Спасибо большое за совет - не знал.

>ты что обалдел ? какая нагрузка на сеть ? от пары тысяч
>пакетов в час ?

Если можно этого избежать - то почему бы так не сделать? (блин, раньше прогрммисты боролись за каждый байт памят - а счаз - пару тысяч сюда - пару тысяч туда... =(

>если уж тебе совсем слиплось смотреть кто сейчас в сети, то поставь
>себе, например DECnet, и  будет тебе счастье

Слушай, я правльно понял, что DECnet - это http://en.wikipedia.org/wiki/DECnet ? или это что-то другое? (если это то, что написанно в вики - то тогда твой ответ - это назад в пещеры?)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Статистика по включенным компьютерам в сети." 
Сообщение от Z0termaNN emailИскать по авторуВ закладки(??) on 07-Апр-05, 10:27  (MSK)
>>вообще-то достаточно ping послать по broadcast адресу (если конечно все
>>машины в одном сегменте) и ловить reply.
>
>Спасибо большое за совет - не знал.
>
>>ты что обалдел ? какая нагрузка на сеть ? от пары тысяч
>>пакетов в час ?
>
>Если можно этого избежать - то почему бы так не сделать? (блин,
>раньше прогрммисты боролись за каждый байт памят - а счаз -
>пару тысяч сюда - пару тысяч туда... =(
>

было и такое, только сейчас ресурсы, как правило дешевле, чем затраты на
оптимизацию.

>>если уж тебе совсем слиплось смотреть кто сейчас в сети, то поставь
>>себе, например DECnet, и  будет тебе счастье
>
>Слушай, я правльно понял, что DECnet - это http://en.wikipedia.org/wiki/DECnet ? или это
>что-то другое? (если это то, что написанно в вики - то
>тогда твой ответ - это назад в пещеры?)

ну почему же сразу в пещеры ? DECnet очень даже нормальный протокол,
и писать на нем сетевые приложения на порядок легче, чем на IP. Хотя
про DENnet, это так к слову в качестве примера, т.к. поддерживает его
уже ограниченный набор оборудования.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Статистика по включенным компьютерам в сети." 
Сообщение от jonatan Искать по авторуВ закладки(??) on 07-Апр-05, 08:58  (MSK)
Windows 2000/XP, например, на ping broadcast по умолчанию не отвечают.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Статистика по включенным компьютерам в сети." 
Сообщение от ImnepaTop Искать по авторуВ закладки on 07-Апр-05, 09:30  (MSK)
Юзай nagios или zabbix.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "Статистика по включенным компьютерам в сети." 
Сообщение от Serg emailИскать по авторуВ закладки(??) on 07-Апр-05, 11:38  (MSK)
Чего-то вы человека совсем запутали ...
В общем если надо следить за машинами в пределах одной подсетки, тода юзай arping ... юзерские фаерволы побоку будут ...
Можно скрипт написать, что-то типа:

#!/bin/bash

arping -c 2 $1

if (( $? )) ; then
   echo "$1     OFF"
else
   echo "$1     ON"
fi

Добавь сюда цикл для своей подсетки ... результат можно прямо в БД писать ... либо html генерировать с картой сети ... в общем на что фантазии хватит :)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру