просматривать другие компьютеры в сети программно в Python - PullRequest
3 голосов
/ 13 июля 2010

Можно ли просматривать другие устройства, которые находятся в той же сети, в Python (или любой другой язык программирования в этом отношении)?

Редактировать: Для пояснения, что я хотел бы сделать (просто для началаout) - отобразить список подключенных устройств и их локальные IP-адреса.На моем маршрутизаторе будет отображаться информация:

family_pc, 192.168.1.2 work_laptop, 192.168.1.3

Я хочу получить эту информацию.

Ответы [ 3 ]

7 голосов
/ 13 июля 2010

Что вы пытаетесь сделать точно?

nmap - довольно распространенный инструмент для сканирования сетей, который, как вам кажется, и нужен. Существует также пакет python-nmap , который позволяет с легкостью использовать nmap непосредственно из Python.

Пожалуйста, поподробнее, чтобы мы могли дать вам лучший ответ, ура.

3 голосов
/ 13 июля 2010

У вас есть несколько вариантов здесь.

Вы можете запустить сканирование портов по всему пространству сетевого адреса, но это довольно расточительно и недружественно.Я не рекомендую это.

Лучше было бы запрашивать устройства, использующие протокол обнаружения служб, например DNS-SD / Zeroconf (он же Bonjour ).Большинство систем Linux и Mac будут реагировать, как и многие сетевые принтеры и другие сетевые устройства.Системы Windows не поставляются с агентом DNS-SD, но его можно установить.

Чистая реализация DNS-SD на Python доступна здесь .Я использовал его в Linux, MacOS и Windows.

Если вы предпочитаете подход Microsoft, вы можете попробовать функции обнаружения UPnP , хотя я не могу подтвердить, насколько хорошо онработает или сколько систем ответит.

0 голосов
/ 13 июля 2010

Если вы не возражаете против использования небольшого стороннего программного обеспечения, вы можете использовать Netresview , который прекрасно работает в системах Windows, избегайте изобретать колесо и все такое. Вы могли бы такого рода вещи.

os.system('NetResView.exe /DisplayComputers 1 /RetrieveIPAddresses /stext ipfile')
my_file = open('ipfile')
for line in my_file :
    print myfile.readline()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...