Этот ответ использует команду nmap для сбора информации о активных хостах в сети.
Nmap («Network Mapper») - это инструмент с открытым исходным кодом для проверки сети и проверки безопасности. Он был разработан для быстрого сканирования больших сетей, хотя он отлично работает с одиночными хостами. Nmap использует необработанные IP-пакеты в новых способах определения того, какие хосты доступны в сети, какие службы (имя и версия приложения) эти хосты предлагают, какие операционные системы (и версии ОС) они запускают, какие типы фильтров пакетов / брандмауэры используются, и десятки других характеристик.Предполагая, что вам нужно сканировать диапазон 192.168.0.X, вы можете попробовать:
nmap -v -sP 192.168.0.0/24
Где 192.168.0.0 - сетевой адрес, а /24 - сетевая маска эквивалентно 255.255.255.0. Таким образом, указанная команда будет сканировать 256 хостов.
Чтобы собрать активные IP-адреса, можно использовать следующую строку:
IPS_UP=$(nmap -nsP 192.168.0.0/24 2>/dev/null -oG - | grep "Up$" | awk '{printf "%s ", $2}')
Фактически она объединяет список активных IP-адресов ( фильтруется grep) в переменную с именем IPS_UP:
nmap запускается с переключателями -n (без разрешения имен), -sP (сканирование ping) и -oG для вывода обработанный grep выход на стандартный вывод (-). grep фильтрует только строки, содержащие слово «Вверх» в конце строки («$»). awk печатает второй столбец в списке, выводимом по nmap, который является IP-адресом, и добавляет пробел. Подстановка команды $() позволяет назначить цепочку команд для переменной IPS_UP.Network Mapper может быть установлен с помощью sudo apt-get install nmap.
Примечание. nmap может обнаружить больше хостов, если их запускает привилегированный пользователь. Это связано с тем, что для сканирования хоста отправляются различные типы пакетов. Изменив указанную выше строку на чтение sudo nmap ..., вы можете запустить команду nmap как root.