
Благодаря невнимательному ведению записей нашим (бывшим! :-) сетевым менеджером мне поручили выяснить, какие устройства QNAP и Synology NAS существуют в нашей компании. У нас несколько сотен офисов, разбросанных по всей Великобритании, и все они представляют собой отдельные сети и отдельные домены. Все они работают на базе Windows (смесь Server 2k3, 2008 и 2012). Мы используем собственное программное обеспечение для мониторинга, которое позволяет мне запускать любое программное обеспечение удаленно.
QNAP и Synologies имеют отличительные MAC-адреса, поэтому если я могу сканировать сеть на предмет MAC-адресов и передавать вывод в файл, я могу легко получить нужную мне информацию. Вопрос в том, как получить список всех MAC-адресов в локальной сети.
Очевидный первый шаг — просто бежать.арп -а, и я, вероятно, пойду дальше и сделаю это в любом случае. Однако это покажет только те устройства, которые сервер видел в течение тайм-аута кэша arp. Кто-нибудь знает простой способ получитьвсеустройства? Под простым я подразумеваю что-то встроенное в Windows - я бы предпочел не устанавливать никакого ПО, поскольку мы говорим о сотнях разных офисов. В таких случаях обычно упоминается nmap, но порты Windows, похоже, требуют установки дополнительных библиотек. Если мне придется использовать внешний сканер, было бы неплохо иметь исполняемый файл, который можно просто скопировать на сервер и запустить.
P.S.:краткое пояснение:
Сканер должен быть приложением командной строки, чтобы я мог запустить его удаленно и отправить вывод в файл для последующего анализа. Он не может полагаться на Java, поскольку нет гарантии, что на всех серверах есть Java. Я почти уверен, что на всех серверах будет как минимум .Net 2.0 - полагаю, в крайнем случае я мог бы быстро скинуть приложение .Net 2.0, чтобы пинговать каждый возможный адрес в сети и получать MAC-адрес, связанный с любыми ответами...
решение1
Самый быстрый/простой способ — это, как правило, извлечь таблицы ARP из ваших коммутаторов (при условии, что у вас управляемые коммутаторы, в противном случае приготовьтесь к большим проблемам) и отфильтровать их на основе MAC-адресов, назначенных производителю сетевой карты(-ок), которую вы ищете. Я обычно пользуюсь этим сайтомдля связи MAC с поставщиками и наоборот, но, безусловно, есть и другие.
Если ваши коммутаторы не управляются, так что вы не можете легко вытащить таблицы ARP из центрального расположения, следующим лучшим подходом будет найти машину в каждом сегменте сети, с которого вы можете транслировать, а затем поискать локальную таблицу ARP на ней. Что... далеко от идеала, но на самом деле лучшее решение из множества плохих вариантов. Вместо того, чтобы делать интерактивный вход на все эти машины, как вы, кажется, предлагаете в своем вопросе,Я бы использовал какой-нибудь метод получения удаленной командной строкииз центрального местоположения, например, с вашей рабочей станции. WinRM, PowerShell remoting и даже PSexec — все это относительно простые варианты достижения этой цели, которые могут подойти вам или нет, в зависимости от того, как настроена ваша среда.
О, и позвольте мне добавить, вместо того, чтобы пинговать каждый адрес или писать приложение для этого, было бы быстрее просто нажатьшироковещательный адрес для каждой из ваших подсетей или глобальный широковещательный адрес, если это тот маршрут, по которому вы в конечном итоге пойдете. (Широковещательный адрес — это адрес .255
в последнем октете, а глобальный широковещательный адрес — 255.255.255.255
.)
решение2
Вы пробовали Angry IP Scanner
?
Кажется, я помню, что это был один исполняемый файл.
Раньше я использовал Fing в Linux, его можно запустить из командной строки и вывести данные в командную строку.
решение3
Если вы можете предсказуемо найти смонтированный том, вы можете определить IP-адрес, а затем отследить, является ли он одним из ваших ошибочных устройств. Вам нужно будет выполнить команду net use
локально или просмотреть любой постоянный сопоставленный диск в реестре.
Затем, либо проверив само имя на наличие информации, либо попытавшись выполнить ping с сервера, можно получить MAC-адрес.