如何使用 nmap 确定给定范围内的哪些 IP 具有端口 80?
Posted
技术标签:
【中文标题】如何使用 nmap 确定给定范围内的哪些 IP 具有端口 80?【英文标题】:How to determine which IPs in a given range have port 80 using nmap? 【发布时间】:2011-04-15 22:47:21 【问题描述】:我是 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
的正常输出..)
有人可以帮我吗?
【问题讨论】:
您可以在不编写 shellscript 的情况下执行此操作。nmap
支持地址范围和特定端口扫描,都作为命令行参数。查看手册页或nmap.org
的文档。
你应该使用 nmap 选项来做你想做的事。但是,这里有一点语法帮助:for ip in 192.168.0.1,255
(没有多余的点)将为您提供 192.168.0.1 和 192.168.0.255 only。如果您想要从 1 到 255 的范围,请执行以下操作:for ip in 192.168.0.1..255
然后您的 nmap
命令将使用此变量:nmap -p80 "$ip"
【参考方案1】:
nmap
带有一个很好的输出参数-oG
(grepable 输出),它使解析更容易。此外,没有必要遍历您要扫描的所有 IP 地址。 nmap 可以识别网络掩码。
你的例子可以写成:
nmap -p80 192.168.0.0/24 -oG - | grep 80/open
-oG
启用grepable 输出,-
指定要输出到的文件(在本例中为stdout
)。管道符号将 nmap (stdout) 的输出重定向到 grep,在这种情况下只返回包含 80/open
的行。
【讨论】:
感谢您的回答...遗憾的是,您的代码没有得到输出...我只是得到这些行(在 shell 脚本中): mass_dns: warning: Unable to open /etc /resolv.conf。尝试使用 --system-dns 或使用 --dns servers mass_dns 指定有效服务器:警告无法确定任何 DNS 服务器。反向 DNS 已禁用。尝试使用 --system-dns 或使用 --dns-servers 指定有效的服务器 和相同的行,但在 Term 中有输出。问题是我想将设备的 ip 与开放端口保留在 var... 您的/etc/resolv.conf
配置是否正确,比如说它包含至少一个有效的DNS 服务器?尝试使用 nmap 的 -n
开关,永久禁用任何(反向)DNS 查找。 将设备的 IP 保存在变量中 是什么意思?你的目标是什么?【参考方案2】:
试试这个
nmap --open -p80 192.168.0.*
--open
只会列出开放了 80 端口的主机。这样您就不必检查您的 shell 脚本,因为过滤已经由 nmap 本身完成。
https://nmap.org/book/man-briefoptions.html
【讨论】:
我不得不引用这个 IP 地址掩码,但它起作用了 -nmap --open -p80 "192.168.0.*"
以上是关于如何使用 nmap 确定给定范围内的哪些 IP 具有端口 80?的主要内容,如果未能解决你的问题,请参考以下文章