Получение Mac-адреса и имени хоста с помощью Cygwin - PullRequest
3 голосов
/ 01 сентября 2011

Мне нужно написать скрипт, который бы получал имя хоста и все физические адреса на моей локальной машине.Он будет работать на нескольких машинах.После некоторых исследований я обнаружил, что могу получить имя хоста из переменной $HOSTNAME, а также нашел команду getmac.Проблема с getmac состоит в том, что он возвращает все mac-адреса (loopback, логические и т. Д.) Без какой-либо информации об используемом интерфейсе.Вот мой пример вывода:

2C-27-D7-40-62-7A   \Device\Tcpip_{A04C5C9D-CD41-48D1-8EC8-54128C70835C}
32-9D-DE-C7-3F-6D   \Device\Tcpip_{EB38E492-9BEF-4F8F-98E6-C08716920461}
02-90-4C-4F-4F-50   \Device\Tcpip_{42DB7C91-BB9E-4BF4-B374-289F1BBA7AC6}

Он дает мне 3 mac-адреса, из которых только один физический, но я не вижу способа решить, какой именно.Не могли бы вы помочь мне?

Ответы [ 3 ]

3 голосов
/ 01 сентября 2011

, так как вы упомянули cygwin, 'awk' будет работать над ним ... для общего выполнения Windows даже отдельная загрузка утилит GNU-Win32 доступна с AWK.

когда вы делаете "$ getmac -V"-FO LIST "будет отображать сетевые устройства с их именем, а затем вы можете получить требуемый MAC-адрес следующим образом:

[Ethernet Card]

для" LocalКарта с пометкой «Подключение к сети» ~

$ getmac -V -FO CSV | awk -F ',' '{if(match($1,"Local Area Connection"))print $3;}'

[Карта беспроводной связи]

для карты с пометкой «Беспроводное сетевое подключение» ~

$ getmac -V -FO CSV | awk -F ',' '{if(match($1,"Wireless Network Connection"))print $3;}'

если у вас более одной карты Ethernet / Wireless, имя может немного измениться ... вы можете проверить фактическое имя, используя "$ getmac -V", и сопоставить его при необходимости.

2 голосов
/ 01 сентября 2011

Просто проанализируйте вывод ipconfig /all

Полагаю, вас интересует только «настоящий» адаптер, подключенный снаружи. На основании информации об IP-адресе / шлюзе по умолчанию, которая также находится там, должно быть относительно просто определить, какой есть какой.

Имейте в виду, что вывод ipconfig незначительно отличается в зависимости от версии Windows. Вы в порядке, если вы разбиваете строки на «:». Не думайте, что: всегда появляется в одном и том же столбце.

0 голосов
/ 01 сентября 2011

Вы также можете проанализировать вывод ipconfig /all, который является утилитой Windows, которая даст вам имена интерфейсов, а также их MAC-адреса.Я не уверен на 100%, какие платформы Windows поддерживают эту утилиту, но она существует в системах от NT до XP.

Она выполняется из оболочки Cygwin bash.

...