我是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
正常输出..)
有人可以帮我吗?
答案 0 :(得分:37)
nmap
带有一个很好的输出参数-oG
( grepable output ),这使得解析更容易。此外,没有必要遍历您要扫描的所有IP地址。 nmap是网络掩码识别。
您的示例可以写成:
nmap -p80 192.168.0.0/24 -oG - | grep 80/open
-oG
启用 grepable输出,-
指定要输出的文件(在本例中为stdout
)。管道符号将nmap(stdout)的输出重定向到grep,在这种情况下,grep仅返回包含80/open
的行。
答案 1 :(得分:14)
试试这个
nmap --open -p80 192.168.0.*
--open
仅列出端口80打开的主机。这样您就不必检查shell脚本,因为nmap本身已经完成了过滤。