Виведіть лише IP-адреси онлайн-машин з nmap


19

Я знаю, як використовувати, nmapщоб знайти список хостів, які зараз в Інтернеті. Що я хотів би зробити, це отримати список лише їх IP-адрес, тепер він відображає додаткову інформацію, наприклад

Nmap scan report for 192.168.x.x' and 'Host is up (0.12s latency).

Мені б хотілося, щоб можна було запустити nmapкоманду, отримати текстовий документ із IP-адресами, які зараз в Інтернеті.

Це взагалі можливо?

Відповіді:


33

Це звичайне:

nmap -n -sn 192.0.2.0/24 -oG - | awk '/Up$/{print $2}'

Швидке скасування параметрів та команд:

  • -nвимикає зворотну роздільну здатність імені, оскільки ви просто хочете IP-адреси. Для локальної локальної мережі це, мабуть, самий повільний крок, тому ви отримуєте хороший приріст швидкості.
  • -snозначає "Не сканувати порт". Це те саме, що і старіші, застарілі -sPза допомогою мнемонічного "сканування пінг".
  • -oG -посилає "grepable" вихід у stdout, який потрапляє в трубопровід awk.
  • /Up$/ вибирає лише рядки, які закінчуються на "Вгору", представляючи хостів, які перебувають в мережі.
  • {print $2} друкує друге поле, розділене пробілом, що є IP-адресою.

Чому мають $ після /Up? Я виявив, що команда nmap -n -sn 192.0.2.0/24 -oG - | awk '/Up/{print $2}'забезпечує ті самі результати.
Майкл

1
@Michael Це лише додатковий рівень безпеки для того, щоб ми не друкували сміття, якщо щось інше містить рядок "Вгору". Таким чином він працює навіть у тому випадку, якщо ви запускаєте його проти випромінюваного виводу у файл з іншого типу сканування, -sVякий може містити непередбачувані рядки з банерів мережевих служб.
бонсайвінг

3

Ви можете подати його на awk:

nmap -sP 192.168.1.0/24 | awk '/is up/ {print up}; {gsub (/\(|\)/,""); up = $NF}'
192.168.1.1
192.168.1.10
192.168.1.20
192.168.1.30
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.