Nmap bash 动态创建文件

Nmap bash dynamic create files

我正在编写一个脚本,该脚本使用 nmap 获取 ip 地址范围内的所有设备及其 mac 地址。我想为每个设备创建一个文件,例如 IPaddress_macaddress。 我这样做是为了获取值,但我不知道如何动态创建文件。

sudo nmap -n -sP 192.168.1.* | 
awk '/Nmap scan report/{printf ;printf " ";getline;getline;printf ;}' > file.txt

这在 file.txt 上打印:

192.168.1.10 DC:EX:03:0S:4B:31
192.168.1.11 A4:2G:8C:E8:5A:65
192.168.1.32 9C:80:GF:J0:53:6F
192.168.1.23 64:7C:54:CC:SD:C4
192.168.1.77 256

这个文件的格式是

ipaddress macaddress

我想解析该文件,为每一行创建一个新文件,其中包含每行内容的名称,并在 IP 地址和 mac 地址之间添加下划线。对应ipaddress_macaddress.txt

因此,对于 file.txt,我希望使用脚本创建 192.168.1.10_DC:EX:03:0S:4B:31.txt

不知道如何智能解析

$ ls
file

$ while read ip mac; do touch ${ip}_${mac}.txt; done < file

$ ls
192.168.1.10_DC:EX:03:0S:4B:31.txt  192.168.1.23_64:7C:54:CC:SD:C4.txt 192.168.1.77_256.txt
192.168.1.11_A4:2G:8C:E8:5A:65.txt  192.168.1.32_9C:80:GF:J0:53:6F.txt  file

作为 awk 在线用户,您可以这样做:

nmap -n -sP 192.168.1.* | awk '{ if ([=10=] ~ /Nmap scan/) { ip= } if ([=10=] ~ /MAC/) { mac=;det[mac]=ip } } END { for ( i in det ) { system("echo \""i" "det[i]"\" > "i"_"det[i]".txt") } }'

这将从 nmap 获取输出,然后搜索 "Nmap scan" 并将 ip 地址放入变量 ip,然后 "MAC" 将 mac 地址放入 mac.然后使用 ip 地址和 MAC 地址创建一个数组。然后循环并使用 awk 系统函数创建具有 ip 和 MAC 地址的文件。