我如何grep这个nmap扫描?

Sed*_*ous 4 linux grep nmap

我正在使用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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我想使用grep将所有启用SSH的服务器导出到一个文件中.该文件仅包含启用SSH的服务器的IP地址.

例如:

1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
5.5.5.5
Run Code Online (Sandbox Code Playgroud)

我找不到会执行此操作的grep命令.我只需要使用grep(或任何其他Linux命令)将启用SSH的IP地址导出到文件中.谢谢,所有的帮助表示赞赏.(顺便说一下,我正在从文件中读取这个nmap扫描)

lar*_*sks 10

首先,您可能希望花一些时间在nmap手册页上,这将显示有用的选项,例如-oG选项,它会产生"greppable output".例如,在我的家庭网络上运行时,如下所示:

$ nmap -p 22 -oG - 192.168.1.0/24
Run Code Online (Sandbox Code Playgroud)

我得到这样的输出:

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///
Run Code Online (Sandbox Code Playgroud)

如果我想要打开端口22的IP地址列表,我可以运行:

$ nmap -p 22 -oG - 192.168.1.24 | grep 22/open
Run Code Online (Sandbox Code Playgroud)

哪个会让我:

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///
Run Code Online (Sandbox Code Playgroud)

如果我想要ip地址,我会使用awk:

$ nmap -p 22 -oG - 192.168.1.24 | awk '/22\/open/ {print $2}'
Run Code Online (Sandbox Code Playgroud)

哪个会让我:

192.168.1.20
192.168.1.52
Run Code Online (Sandbox Code Playgroud)

......我认为你在寻找什么.