Bash 正在尝试制作IP扫描仪,输出有问题

Bash 正在尝试制作IP扫描仪,输出有问题,bash,awk,Bash,Awk,好的,我试着做一个IP扫描器,只输出网络上主机的IP地址,并打开端口。这就是我目前所拥有的 < #!/bin/bash nmap 192.168.1.1-254> scan.txt cat scan.txt | grep "report" | cut -d " " -f 5 > 我尝试了多个cut和awk组合,但我无法让它工作……有什么想法吗?试试: grep-e“报告+[0-9]+\[0-9]+\[0-9]+\[0-9]+\[0-9]+\” 这将查找报告,后跟一个或多个空

好的,我试着做一个IP扫描器,只输出网络上主机的IP地址,并打开端口。这就是我目前所拥有的

< #!/bin/bash

nmap 192.168.1.1-254> scan.txt
cat scan.txt | grep "report" | cut -d " " -f 5 >
我尝试了多个cut和awk组合,但我无法让它工作……有什么想法吗?

试试:

grep-e“报告+[0-9]+\[0-9]+\[0-9]+\[0-9]+\[0-9]+\”


这将查找
报告
,后跟一个或多个空格,后跟四个空格。仅限分隔的数字集。有更优雅的方法可以做到这一点,但不容易看到它在做什么。

假设您在一个名为“my\u nmap\u file.txt”的文件中有以下nmap输出

您可以尝试使用命令行

cat 'my_nmap_file.txt'|grep "Nmap scan report for *" |grep -o  -E '[0-9.]+'|sed '1 s#.*#Your Gateway: &#'
这将匹配以下行,如下所示,并获取其ip地址

Nmap scan report for 192.168.1.2
输出

Your Gateway: 192.168.1.1
192.168.1.2
192.168.1.8
192.168.1.6
注意:我在第一行添加了一个名为“你的网关:”的小句子


我注意到您还需要与ip地址匹配的开放端口。如果您可以提供nmap为开放端口提供的消息。也许我们也能找到这种模式。

看起来你得到了你想要的,但你不想要DNS解析?将
-n
标志用于
nmap
Nmap scan report for 192.168.1.2
Your Gateway: 192.168.1.1
192.168.1.2
192.168.1.8
192.168.1.6