![使用 nmap 和 awk,显示主机 ip 的所有 http 端口](https://linux22.com/image/1462060/%E4%BD%BF%E7%94%A8%20nmap%20%E5%92%8C%20awk%EF%BC%8C%E6%98%BE%E7%A4%BA%E4%B8%BB%E6%9C%BA%20ip%20%E7%9A%84%E6%89%80%E6%9C%89%20http%20%E7%AB%AF%E5%8F%A3.png)
我使用以下命令扫描了网络上的大约 50 台主机:
nmap -sV -iL sweep_ips.txt -oG result.txt
ex: ...
Host: 192.168.x.x () Ports: 8000/open/tcp//http//Apache httpd 2.2.3 ((CentOS))/ Ignored State: filtered (999)
...
我显示了找到 http 端口的 IP 地址:
grep http result.txt | awk '/http/{print $2}'
到目前为止一切顺利。除了 http 端口不总是 80 或 443。我有一些奇怪的端口,如 10000 等。我希望 awk 找到它找到“http”的特定端口字段,然后显示该字段的部分或全部。这可能吗?
就像是:
192.168.x.x 8000
就足够了。
有任何想法吗?
答案1
perl -lane 'print "$F[1] $1" if m{([0-9]*)/open[^,]*/http}'
尝试使用 awk 执行此操作,但它不执行捕获。相反,Perl 的-a
switch 像 awk 一样拆分行,并通过哈希访问子字符串%F
。更好的解决方案是考虑单个主机上的多个“http”服务。