Чтобы получить Mac адрес виндовой машины с машины с ОС FreeBSD ( на Linux возможно также, не проверял ) необходимо пропинговать IP адрес :
$ ping -c1 192.168.255.104 PING 192.168.255.104 (192.168.255.104): 56 data bytes 64 bytes from 192.168.255.104: icmp_seq=0 ttl=64 time=1.135 ms 192.168.255.104 ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 1.135/1.135/1.135/0.000 ms
и поглядеть его в ARP таблице:
arp 192.168.255.104 | awk -F "at" $'{print$2}' | awk -F "on" $'{print$1}' 90:e6:ba:a0:2a:27
Также можно узнать NetBIOS имя компьютера вот такой командой:
nmblookup -A 192.168.255.104 | awk -F 'Looking up' '{print$1}' | awk -F '<00>' '{print$1}' | sed '2!d' SHADOW
Собственно скрипт,который запишет в файл ip.txt соответсвия IP, MAC адресов и NetBIOS имен тех компьютеров,которые находяться в сети и ответили на ping
#!/bin/sh for IP in $(seq 254) do ping -c1 192.168.255.$IP MAC=`arp 192.168.255.$IP | awk -F "at" $'{print$2}' | awk -F "on" $'{print$1}'` NAME=`nmblookup -A 192.168.255.$IP | awk -F 'Looking up' '{print$1}' | awk -F '<00>' '{print$1}' | sed '2!d'` if [ ${MAC} != "(incomplete)" ] then echo 192.168.255.$IP ${MAC} ${NAME} >> ip.txt fi done
Источник deathstar.name