Как определить, какие IP-адреса в данном диапазоне имеют порт 80, используя nmap? - PullRequest
16 голосов
/ 23 сентября 2010

Я новичок в скриптах bash и пытаюсь заставить это работать:

Сканирование диапазона IP-адресов для поиска устройств с открытым портом 80 ... Я думаю, это должно выглядеть так:

#!/bin/bash
echo -----------------------------------
for ip in 192.168.0.{1,.255}; do
nmap -p80 192.168.0.1
      if #open; then
            echo "{ip} has the port 80 open"
      else
            #do nothing
fi
done
echo -----------------------------------
exit 0

Я также просто хочу увидеть результаты, подобные этим:

-----------------------------------
192.168.0.1 has the port 80 open
192.168.0.10 has the port 80 open
192.168.0.13 has the port 80 open
192.168.0.15 has the port 80 open
-----------------------------------

(То есть без ошибок или nmap нормальных выходов ..)

Может ли кто-нибудь помочь мне в этом?

Ответы [ 2 ]

37 голосов
/ 23 сентября 2010

nmap поставляется с хорошим выходным параметром -oG ( grepable output ), который упрощает анализ.Также нет необходимости перебирать все IP-адреса, которые вы хотите сканировать.nmap поддерживает маску.

Ваш пример может быть записан как:

nmap -p80 192.168.0.0/24 -oG - | grep 80/open

-oG включает grepable output , а - указывает файлвывод на (в данном случае stdout).Символ канала перенаправляет вывод nmap (stdout) в grep, который в этом случае возвращает только строки, содержащие 80/open.

15 голосов
/ 17 августа 2015

Попробуйте это

nmap --open -p80 192.168.0.*

--open будет отображать только хост с открытым портом 80. Таким образом вы избавляетесь от необходимости проверять свой скрипт оболочки, поскольку фильтрация уже выполняется самим nmap.

https://nmap.org/book/man-briefoptions.html

...