LINUX.ORG.RU

Получить ip машин в сети


0

0

Собственно, subj. Подскажите, какими функциями unix sockets можно получить список ip всех машин, находящихся в сети. Привязку к каким-либо библиотекам не предлагать, работать должно как в *NIX, так и в offtopic (Winsocks).

:)

Попробуй пингануть броадкастом.

а вообще насколько я понял ты даже не представляеш что такое сеть.

cvv ★★★★★
()
Ответ на: комментарий от one_more_hokum

в таком случае универсального способа не существует.

При любом способе могут быть необнаруженные машины...

я бы рекомендовал начать с прочтения Стивенса

cvv ★★★★★
()
Ответ на: комментарий от cvv

>Подскажите, какими функциями unix sockets можно получить список ip всех машин, находящихся в сети.

наиболее надёжный способ - спросить админа, возможно при помощи утюга/паяльника

если есть в сети DHCP сервер тот тоже может многое рассказать...

cvv ★★★★★
()
Ответ на: комментарий от cvv

> если есть в сети DHCP сервер тот тоже может многое рассказать...

hm... интересно, каким образом? причем удалённо и левому хосту..

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от cvv

Стивенса есть у меня! Здоровская книжка, но толстая оччень (потому и здоровская). Т. е. как вариант, тупо пропинговать диапазон адресов от и до? Маску сети добыть - это придётся системозависимые функции использовать?

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от one_more_hokum

> DHCP нет, я буду не левым хостом, а вполне официально подключенным.

ну да, знаем мы этих "официальных". чтобы быть действительно официально зарегистрированным в сети, вам нужно отсылать паспортные данные на DHCP сервер. вы это делаете?

// wbr

klalafuda ★☆☆
()

Накатал на коленке за пару минут. Скан сети за пару секунд.

#! /bin/sh

for i in `seq 1 254`; do
    arping -f -I eth0 192.168.0.$i -c 1 -w 1 | grep reply >&1 2>/dev/null &
done;

Видно машины сети 192.168.0.*, в т.ч. и не отвечающие на ICMP echo.
* -с 1     -  кол-во who-has запросов.
* -w 1     -  таймаут запроса.
Величины можно увеличить, однако в простой локалке это не несет почти никакого смысла.

shahid ★★★★★
()

>список ip всех машин, находящихся в сети

/me представил как ты собираешься получить список всех машин, находящихся в инете :).

1. ICMP - не показатель, это факт... ибо он может тупо игнорироваться хостами.

2. arping - более действенный, но есть у меня подозрение, что ответ получить можешь из кеша свича.

3. пытаться средствами TCP выловить (например заставить прислать ответ в виде RESET'а), также не показатель... зависит от настроек хоста.

4. применение ректотермального криптоанализа тоже не даст 100%-ый резалт :)

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

Deleted
()
Ответ на: комментарий от Deleted

Ну а если у меня есть возможность задать всем машинам в сети нужные настройки? ICMP включить, прочее, что тогда посоветуете?

one_more_hokum ★★★
() автор топика
Ответ на: комментарий от one_more_hokum

Хм....ну вроде nmap есть и в такой сборке и в такой. Вряд ли так from scratch переписывали. Посмотри всё же сырцы.

Anoxemian ★★★★★
()
Ответ на: комментарий от one_more_hokum

скорее всего єто наиболее разумное решение

cvv ★★★★★
()
Ответ на: комментарий от one_more_hokum

> Т. е. предлагаешь выдрать из nmap-а нужный кусок кода, и запихать его в мою программу?

Только не забывая про GPL :-)

Anoxemian ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.