Получить подключенные хосты LAN через ARP и вывести в одной строке.

Вопрос или проблема

Я использую следующую команду nmap

nmap -sP 192.168.1.0/24 | awk '{print $1}'`| awk '/Nmap scan report for/{print " "$5,$6;}/MAC 
Address:/{print $3;}'

которая выводит

box1.lan (192.168.1.119)
00:0E:C7:82:48:10
box2.lan (192.168.1.189)
00:E0:4F:68:01:14

как сделать так, чтобы вывод был в следующем формате

00:0E:C7:82:48:10 box1.lan 192.168.1.119
00:E0:4F:68:01:14 box2.lan 192.168.1.189

Ответ или решение

Чтобы получить данные о связанных хостах в LAN через ARP и вывести их в заданном формате, можно использовать команду nmap вместе с утилитой awk, что вы уже начали делать. Однако для достижения желаемого формата вывода, нам нужно немного модифицировать ваш текущий скрипт.

Ваш текущий командный обработчик выводит информацию в виде:

box1.lan (192.168.1.119)
00:0E:C7:82:48:10
box2.lan (192.168.1.189)
00:E0:4F:68:01:14

Хотите получить его в формате:

00:0E:C7:82:48:10 box1.lan 192.168.1.119
00:E0:4F:68:01:14 box2.lan 192.168.1.189

Модифицированная команда

Используйте следующий код командной строки:

nmap -sP 192.168.1.0/24 | awk '/Nmap scan report for/{printf $5," "}; /MAC Address:/{print $3}' | sed 'N;s/\n/ /;s/\((.*)\)/\1/'

Объяснение работы команды:

  1. nmap -sP 192.168.1.0/24 – Эта часть команды выполняет сканирование локальной сети на наличие активных хостов. Опция -sP (или -sn на более новых версиях) используется для простого пинг-сканирования.

  2. awk ‘/Nmap scan report for/{printf $5," "}; /MAC Address:/{print $3}’ – Этот фрагмент кода фильтрует выходные данные nmap.

    • /Nmap scan report for/ – Ищет строки, содержащие информацию о сканировании хостов. Мы используем printf для того, чтобы вывести адрес.
    • /MAC Address:/ – Ищет строки, содержащие MAC-адрес, который выводится на печать.
  3. *sed ‘N;s/\n/ /;s/((.))/\1/’** – Здесь мы объединяем две строки в одну.

    • N – Захватывает следующую строку.
    • s/\n/ / – Заменяет символ новой строки на пробел.
    • s/\((.*)\)/\1/' – Удаляет круглые скобки вокруг IP-адреса, чтобы получился чистый вывод.

Ожидаемый результат

При выполнении приведенной выше команды вы должны увидеть вывод в нужном формате:

00:0E:C7:82:48:10 box1.lan 192.168.1.119
00:E0:4F:68:01:14 box2.lan 192.168.1.189

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...