grep nmap输出

时间:2016-03-27 20:20:04

标签: linux grep pipe nmap

我已将我的nmap结果输出到名为 test.txt 的文件中,它看起来像这样:

Nmap scan report for 192.168.1.5
Host is up (0.13s latency).
PORT    STATE  SERVICE VERSION
23/tcp   open  telnet  Linux telnetd
--
Nmap scan report for 192.168.1.7
Host is up (0.13s latency).
PORT    STATE SERVICE    VERSION
80/tcp  open  http       Popper
--
Nmap scan report for 192.168.1.20
Host is up (0.13s latency).
PORT    STATE SERVICE VERSION
110/tcp open  pop3    Dove

我想使用grep和pipe从终端中的文件输出结果,格式显示结果:IP地址后跟开放端口,如下所示:

192.168.10.2
80
223
53
192.168.10.7
80
223

2 个答案:

答案 0 :(得分:1)

你可能想要:

cat test.txt | sed 's/Nmap scan report for //' | sed '/Host is/d' | sed '/Not shown/d' | sed '/All/d' | sed '/PORT /d' | cut -f1 -d"/" | sed '/^$/d' | sed '/--/d'

nmap -F 192.168.0.1/24 > test.txt

cat test.txt | tail -n+3 | sed '/Nmap done/d' | awk 'NR>1{print l}{l=$0}' | sed 's/Nmap scan report for //' | sed '/Host is/d' | sed '/Not shown/d' | sed '/All/d' | sed '/PORT /d' | cut -f1 -d"/" | sed '/^$/d'

笑话。没有意义......将 nmap 与XML输出-oX一起使用。
阅读:https://nmap.org/book/output-formats-xml-output.html

答案 1 :(得分:0)

我要做以下事情:

  1. 获取正则表达式以匹配nmap输出的ip和端口。您可以利用两者的位置,即端口位于行的开头(^),并以' /'结束。字符和ip是该行的最后一项($)。
  2. 使用grep -o查找任何正则表达式(查看正则表达式(|)上的OR运算符)。这会将输出减少到匹配。