首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何筛选多个字符串的nmap结果并将其输出到文件中?

如何筛选多个字符串的nmap结果并将其输出到文件中?
EN

Stack Overflow用户
提问于 2015-09-16 14:06:12
回答 1查看 1.6K关注 0票数 0

2I想使用nmap在我的网络上获得一个linux服务器的主机列表,但我不知道如何基于多个字符串过滤结果。所以我用的是:

代码语言:javascript
复制
nmap -sT -R --dns-servers 192.168.1.1,192.168.1.2 -p 22 192.168.1.0/24

这给了我结果,但当然,它也显示了每一个IP关闭端口。我如何在awk中使用逻辑,以便如果它找到一个带有主机名的IP,并发现下面的行具有“tcp打开”,它就会将这两行吐到输出文件中?

从nmap中使用的典型输入如下:

代码语言:javascript
复制
Interesting ports on server.domain.com (192.168.1.1):
PORT   STATE SERVICE
22/tcp open  ssh

Interesting ports on server2.domain.com (192.168.1.2):
PORT   STATE SERVICE
22/tcp closed  ssh

但是这是针对每一个被扫描的IP,所以我试图找到一种方法来拥有一个只有主机名和IP的文件,如果它从上面的nmap命令中显示为'tcp‘。基本上是给你一个文件:

代码语言:javascript
复制
server.domain.com (192.168.1.1)

因此,只有当SSH实际监听端口22时,我才能获得服务器名和IP。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-16 18:20:37

根据示例输入和发布的示例输出,类似这样的内容可以工作:

代码语言:javascript
复制
awk '/^Interesting/ {
       domain = $(NF-1)
       ip = substr($NF, 0, length($NF) - 1)
     }
     $2 == "open" {print domain, ip}' file

它的工作方式如下:

  • 如果一行以“有趣”开头,那么第二个到最后一个字段作为域存储,最后一个字段(减去后面的冒号)存储为ip。
  • 如果它找到第二个令牌是“打开”的行,那么它将打印之前找到的域和ip。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32610926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档