我使用以下命令扫描了网络上的大约 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”服务。