Список компьютеров сети

Nixon

Новичок
Список компьютеров сети

Подскажите, пожалуйста, как получить список компьютеров сети? Интересуют имена компьютеров, доступных по протоколу Samba из всех доступных рабочих групп сети.
 

Nixon

Новичок
jonjonson, может быть, я ошибаюсь, но этот класс работает напрямую через "/usr/bin/smbclient", а у меня винда...
 

Pechkin

Новичок
Всех клиентов? Если не знаешь диапазон IP адресов сети - тогда будь готов пинговать весь диапазон IP адресов :) Их, всего-то 2 в 32ой степени штук. Не так и много :)
Нет сетевого протокола, по-которому можно получить ответ от всех включённых компьютеров и занести их в базу. Либо пинг, либо конектиться к каждому и проверять успешность создания соединения, тогда и получится список рабочих машин.
Насколько я понимаю технологию Ethernet, получить адреса всех включеных машин там не возможно (ну, если, конечно, не написать для этого соответствующий протокол).
The class can browse shared directories, browse printer queues, retrieve files, print files, cancel print jobs, delete files and directories.
Собственно в описании класса и не написано, что можно получить все клиенты...Т.е. можно работать с конкретным из них, но получить всех нельзя.
 

Nixon

Новичок
Ну а как же тогда винда строит этот список? пропинговывает постоянно 2^32 адресов? =-O
 

Pechkin

Новичок
У винды есть ARP таблица, в которой содержится часть этих адресов (соответствие mac-IP). Причём, если установлен в сети arp-proxy, то такой таблицы у неё вообще нет (вернее есть, но там запись только 1на, указывающая mac именно вот этой самой прокси).Если, конечно, прописана статическая ARP таблица, то у неё содержится инормация о всех клиентах твоей подсети (т.е. до ближайшего роутера). Если комп только что включился, то у него почти пустая арп таблица :)
А вообще, винде нет смысла пинговать 2 в 32ой адресов т.к. оно пингует только твою подсеть (в соответствии с маской), а пропинговать 256 адресов не состовляет труда.

-~{}~ 07.10.07 17:46:

Если вы настаиваете на существовании таблицы адресов клиентов в винде, то может коммандочку подскажете, как её посмотреть? (посмотреть АРП таблицу можно arp -a, таблицу маршрутизации route print). Соответственно, если существует такая таблица, то её должно быть можно посмотреть.
 

Pechkin

Новичок
Естественно, но винда не даёт сделать Broadcast-ping :)
Линукс - даст.

-~{}~ 07.10.07 18:18:

ну, или имеется ввиду получать доступ к ресурсам по broadcast адресу? :D
 

jonjonson

Охренеть
Nixon, а не пытался изучить утилиты командной строки системы с которой работаешь?

nbtstat
 

Pechkin

Новичок
И что эта комманда даёт? Эта таблица подключений. Т.е. если комп ни к кому не подключался по протоколу TCP, то таблица будет пустой. У меня, например, в ней сейчас только 1на запись, хотя в сети компьютеров ОЧЕНЬ много.
 

jonjonson

Охренеть
Pechkin, а дальше тему командной строки развивать не хочешь? Тогда извини, я за тебя разбираться с этим вопросом не стану.
А ведь ещё на вижуал васике можно COM объект отписать, получающий список, и скомпилить в dll, а потом через интерфейс COM с php дёргать. Кто ищет, тот найдёт.
 

Pechkin

Новичок
Почему же. В Линуксе можно получить ответы от всех компов коммандой ping -B (кажется так), и таким образом заполнить АРП таблицу всеми включёнными клиентами, а после из неё прочитать IP адреса. Но в винде нет широковещательного пинга, поэтому такой метод не годится. Насколько мне известно, винда не хранит список включённых компов, поэтому взять список клиентов, не пингуя всех вроде нет возможности. Можно пингануть подсеть циклом и потом работать с АРП таблицей.
 

jonjonson

Охренеть
Pechkin, проведи в винде эксперимент, например:
ping 192.168.255.255
если сеть
192.168.255.0 имеет маску 255.255.255.0
а потом дай команду
arp -a
И ты удивишься :)
Вопрос в другом, как получить список виндовых машин (их имена?), если не используется стек протоколов TCP/IP, а скажем небиуе бегает поверх новеловского протокола. Впрочем это уже усложнение ситуации.
 

Pechkin

Новичок
У меня лично приходит ответ от гейтвэя и я получаю доп. запись в таблице АРП:
10.10.80.1 ......
Сеть соответственно 10.10.80.0/24
Собственно, никакого удивления, широковещательный пинг не прошёл.

-~{}~ 08.10.07 13:30:

Проблема пинга даже не в этом, а в том, что большинство фаерволов и роутеров блокирует протокол ICMP, поэтому такой вариант вообще не годится. Нужно думать каким-то другим способом.
 
Сверху