gpt4 book ai didi

sed - 使用 grep、awk 或 sed 过滤 nmap 输出

转载 作者:行者123 更新时间:2023-12-02 15:34:31 24 4
gpt4 key购买 nike

我使用 NMAP,在大型网络上运行扫描以查看打开的端口。输出文件是 2MB,但我想过滤掉所有端口关闭的所有 IP 地址。

 Nmap scan report for 10.x.x.x
Host is up (0.048s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
23/tcp open telnet

Nmap scan report for 10.x.x.x
Host is up (0.046s latency).
All 1000 scanned ports on 10.x.x.x are closed

Nmap scan report for 10.x.x.x
Host is up (0.045s latency).
All 1000 scanned ports on 10.x.x.x are closed

应该输出到只输出到:

 Nmap scan report for 10.x.x.x
Host is up (0.048s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
23/tcp open telnet

编辑

结果是这样的

 Nmap scan report for 10.x.x.x
Host is up (0.048s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
23/tcp open telnet
Nmap scan report for 10.x.x.x
Host is up (0.046s latency).
All 1000 scanned ports on 10.x.x.x are closed
Nmap scan report for 10.x.x.x
Host is up (0.045s latency).
All 1000 scanned ports on 10.x.x.x are closed

有些换行符没有正确复制过来

编辑感谢大家。我看到 awk 非常棒而且很容易做到。

最佳答案

如我所见,您正在尝试对 nmap 输出应用一些智能过滤,而不仅仅是简单的“grep”。

由于您的 nmap 命令(根据您的评论而不是您的问题)指向子网而不是单个主机,因此您需要单独解释输出的每个部分。但是这种解释对于正则表达式来说太复杂了。 (使用 PREG 可能是可行的,但编写起来会非常困难,而且几乎不可能阅读。)像 awk 这样的工具是完成此任务的更好选择。

例如:

nmap 10.10.0.0/16 | awk '
/^Nmap scan report for/ {
if (open) {
print output;
}
output="";
open=0;
}

{
output=output $0 "\n";
}

$2 == "open" {
open=1;
}

END {
if (open) {
print output;
}
}
'

Awk 很容易阅读,但您应该知道它通过将每一行输入与看起来像 condition { action } 的表达式进行匹配来运行。如果条件评估为真,则执行操作。所以第一个有一个条件,它是一个用于查找主机部分开头的正则表达式,并且操作包含在花括号中。缺少第二个条件,因此假设所有行都为“真”。在处理完所有输入行后,最后一个条件匹配,并且在最后扫描的主机包含打开端口的情况下是必需的。

这种东西可以表达得更密集,但我写了很长时间,这样你就可以更容易地看到逻辑是如何工作的。练习会带来更严格的代码。

请注意,您可以将 awk 脚本放入一个单独的文件中,您可以使用 awk 的 -f 选项引用该文件。阅读the man page了解详情。

如果您不想将 awk 部分保留在它自己的文件中,您也可以将这整个东西放入它自己的 shell 脚本中。您应该能够很容易地找到看起来像什么的示例 - 无论如何,它超出了这个问题的范围。

关于sed - 使用 grep、awk 或 sed 过滤 nmap 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20221112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com