Есть ли какой-нибудь простой способ узнать MAC-адреса всех машин в моей сети, вместо того, чтобы делать SSH для каждого и ifconfig | grep HWaddr
если в сети 300 машин, мне действительно нужно какое-то простое решение.
Ты можешь использовать Nmap для запуска проверки связи.
nmap -sP 192.168.254.*
Starting Nmap 5.00 ( http://nmap.org ) at 2011-03-09 11:32 GMT
Host xyzzy.lan (192.168.254.189) is up (0.00022s latency).
MAC Address: 00:0C:29:5B:A5:E0 (VMware)
Host plugh.lan (192.168.254.196) is up (0.00014s latency).
MAC Address: 00:0C:29:2E:78:F1 (VMware)
Host foo.lan (192.168.254.200) is up.
Host bar.lan (192.168.254.207) is up (0.00013s latency).
MAC Address: 00:0C:29:2D:94:A0 (VMware)
Nmap done: 256 IP addresses (4 hosts up) scanned in 3.41 seconds
Редактировать:
Сценарий sed для фильтрации вывода по IP -> MAC - поместите его в файл.
/^Host.*latency.*/{
$!N
/MAC Address/{
s/.*(\(.*\)) .*MAC Address: \(.*\) .*/\1 -> \2/
}
}
/[Nn]map/d
s/^Host .*is up/& but MAC Address cannot be found/
и используйте это так
nmap -sP 192.168.254.0/20 | sed -f sedscript
192.168.254.189 -> 00:0C:29:5B:A5:E0
192.168.254.196 -> 00:0C:29:2E:78:F1
Host foo.lan (192.168.254.200) is up but MAC Address cannot be found.
192.168.254.207 -> 00:0C:29:2D:94:A0
Используйте nmap. Важно запускать его как root, чтобы получить MAC-адреса. Пример:
sudo nmap -sP 192.168.1.0/24
Просканирует 192.168.1.1 - 192.168.1.255. Посмотрите нотацию CIDR в вики, если вы не знакомы с этой нотацией подсети.
Вы должны иметь возможность получить nmap из репозиториев любого недавнего дистрибутива Linux, например
sudo apt-get install nmap
или
sudo yum install nmap
Пример вывода из моей сети:
Host 192.168.1.1 is up (0.0069s latency).
MAC Address: 00:0D:54:9B:D8:F4 (3Com)
Host 192.168.1.78 is up (0.0068s latency).
MAC Address: 00:0C:29:BC:3D:1C (VMware)
Host 192.168.1.91 is up (0.0038s latency).
MAC Address: 00:0C:29:8A:F4:A3 (VMware)
Host 192.168.1.92 is up (0.0039s latency).
MAC Address: 00:0C:29:65:60:5F (VMware)
Host 192.168.1.158 is up (0.033s latency).
MAC Address: 00:0C:29:82:24:EA (VMware)
Host 192.168.1.186 is up (0.0024s latency).
MAC Address: 00:0C:29:3E:26:1F (VMware)
Host 192.168.1.190 is up (0.0066s latency).
Попробуйте эту команду:
arp-scan --interface=eth0 192.168.1.0/24
Пока вы запускаете эту команду с хоста в том же сегменте сети, nmap
сообщит обо всех MAC-адресах для каждого обнаруженного хоста.
Например:
sudo nmap 192.168.1.0/24 -sP
Starting Nmap 4.76 ( http://nmap.org ) at 2011-03-09 06:29 EST
Host old.net (192.168.1.1) appears to be up.
MAC Address: 00:18:39:C5:A1:DC (Cisco-Linksys)
Для MAC-адресов мне нужно быть root в моем Ubuntu. Также простой метод для одного хоста - просто пропинговать его и посмотреть на таблицу arp с помощью arp -a
если вы хотите использовать только команды, обычно включенные в первоначальную установку дистрибутива:
arp -a | grep -v incomplete
foo.net (192.168.1.145) at 00:0d:4b:6a:2c:cb [ether] on eth0
В зависимости от топологии вашей локальной сети лучшим вариантом может быть отображение таблицы MAC-адресов на коммутаторах.
Так, например, если ваша инфраструктура коммутатора - Cisco, вы можете попробовать
sh mac address-table
на каждом переключателе.
Если у вас много переключателей, вы можете автоматизировать эту задачу с помощью SNMP.
Другой вариант и (опять же) в зависимости от вашей топологии и типа сетевого оборудования, вы также можете попытаться получить MAC-адреса ваших устройств, отображающих таблицу arp на ваших маршрутизаторах.
С помощью любого из этих двух методов вы также получите список MAC-адресов любых устройств, подключенных к вашей сетевой инфраструктуре: ПК, принтеров, точек доступа и т. Д. В первом случае даже устройств без IP-адреса. Возможно, вы этого хотите, а может и нет, но попробовать стоит.
Возможно, arp-scan тоже вариант:
См. Пример здесь: Руководство пользователя Arp-Scan
Поскольку вы упомянули о ssh в машинах в вашей сети, вы также можете использовать эту короткую подсказку:
nmap -p 22 10.100.10.0/24 >/dev/null ; arp -a
Вы можете использовать программу под названием SIW, она бесплатна и сканирует сеть, не требуя разрешений или аргументов.
Доступен в формате .exe или при полной установке.