【问题标题】:Grep the nmap outputgrep nmap 输出
【发布时间】:2016-07-15 02:43:17
【问题描述】:

我已将我的 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 和管道从我的终端中的文件输出结果,该管道以以下格式显示结果:IP 地址后跟打开的端口,如下所示:

192.168.10.2
80
223
53
192.168.10.7
80
223

【问题讨论】:

  • 良好的示例数据和所需的输出(加号-uno!),但您忘记显示您的代码(减号!)。 Stackoverflow 不是免费的编码服务。几乎任何解决您问题的尝试都会表明您不只是在寻找某人为您解决问题。为了给你一个提示,你可以使用ncat ... | sed 's/Nmap scan report for //;s/Host is up [(]//' 来删除不需要的标题信息。使用我提供的内容来扩展它以摆脱所有不需要的标题信息并更新您的 Q。祝你好运。

标签: linux grep pipe nmap


【解决方案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

【讨论】:

    【解决方案2】:

    我会做以下事情:

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

    【讨论】:

      猜你喜欢
      • 2020-04-29
      • 2013-12-11
      • 2019-01-22
      • 2014-02-16
      • 2022-08-15
      • 2016-06-24
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      相关资源
      最近更新 更多