如何使用nmap确定给定范围内的哪些IP具有端口80?

ban*_*nah 19 bash shell nmap

我是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
Run Code Online (Sandbox Code Playgroud)

我也想看到这样的结果:

-----------------------------------
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
-----------------------------------
Run Code Online (Sandbox Code Playgroud)

(所以没有错误或nmap正常输出..)

有人可以帮助我吗?

Man*_*aux 38

nmap带有一个很好的输出参数-oG(grepable输出),这使得解析更容易.此外,没有必要遍历您要扫描的所有IP地址.nmap是网络掩码识别.

您的示例可以写为:

nmap -p80 192.168.0.0/24 -oG - | grep 80/open
Run Code Online (Sandbox Code Playgroud)

-oG使能的grepable输出,并且-指定文件输出到(在这种情况下stdout).管道符号将nmap(stdout)的输出重定向到grep,后者只返回包含80/open在这种情况下的行.


Moh*_*med 16

试试这个

nmap --open -p80 192.168.0.*
Run Code Online (Sandbox Code Playgroud)

--open只列出主机端口80开启.这样您就不必检查shell脚本,因为nmap本身已经完成了过滤.

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