我正在使用nmap扫描启用SSH的服务器。这是nmap从扫描中输出的内容:
SSH禁用服务器示例:
Nmap scan report for 70.0.0.109.rev.sfr.net (109.0.0.70)
Host is up (0.15s latency).
PORT STATE SERVICE
22/tcp closed ssh
SSH启用服务器示例:
Nmap scan report for 255.0.0.109.rev.sfr.net (109.0.0.255)
Host is up (0.12s latency).
PORT STATE SERVICE
22/tcp filtered ssh
我想使用grep将所有启用SSH的服务器导出到文件中。该文件仅包含启用SSH的服务器的IP地址。
例如:
1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
5.5.5.5
我找不到会执行此操作的grep命令。我只需要使用grep(或任何其他Linux命令)将启用SSH的IP地址导出到文件中。谢谢,所有的帮助表示赞赏。 (顺便说一下,我正在从文件中读取这个nmap扫描)
答案 0 :(得分:10)
首先,您可能希望花一些时间使用nmap
手册页,这将显示有用的选项,例如-oG
选项,它会生成“greppable output”。例如,在我的家庭网络上运行时,如下所示:
$ nmap -p 22 -oG - 192.168.1.0/24
我得到这样的输出:
Host: 192.168.1.1 (gw.house) Status: Up
Host: 192.168.1.1 (gw.house) Ports: 22/closed/tcp//ssh///
Host: 192.168.1.3 () Status: Up
Host: 192.168.1.3 () Ports: 22/closed/tcp//ssh///
Host: 192.168.1.20 (fileserver.house) Status: Up
Host: 192.168.1.20 (fileserver.house) Ports: 22/open/tcp//ssh///
Host: 192.168.1.29 () Status: Up
Host: 192.168.1.29 () Ports: 22/closed/tcp//ssh///
Host: 192.168.1.52 (laptop.house) Status: Up
Host: 192.168.1.52 (laptop.house) Ports: 22/open/tcp//ssh///
如果我想要打开端口22的IP地址列表,我可以运行:
$ nmap -p 22 -oG - 192.168.1.24 | grep 22/open
哪会让我:
Host: 192.168.1.20 (arcadia.house) Ports: 22/open/tcp//ssh///
Host: 192.168.1.52 (lkellogg-pk115wp.house) Ports: 22/open/tcp//ssh///
如果我想只是的IP地址,我会使用awk
:
$ nmap -p 22 -oG - 192.168.1.24 | awk '/22\/open/ {print $2}'
哪会让我:
192.168.1.20
192.168.1.52
...我认为你在寻找什么。