我正在编写一个脚本,使用nmap
来获取 ip 地址范围内的所有设备及其 mac 地址。我想为每个设备创建一个文件,例如 IPaddress_macaddress 。
我这样做是为了获得价值,但我不知道如何动态创建文件。
sudo nmap -n -sP 192.168.1.* |
awk '/Nmap scan report/{printf $5;printf " ";getline;getline;printf $3;}' > 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
我想解析该文件,为每行创建一个新文件,其中包含每行内容的名称,在ipaddress和macaddress之间添加下划线。与 ipaddress_macaddress.txt
对应因此,对于该file.txt,使用脚本,我希望它能够创建 192.168.1.10_DC:EX:03:0S:4B:31.txt etc
我不知道如何智能地解析它
答案 0 :(得分:1)
$ 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
答案 1 :(得分:1)
作为一名awk在线人,您可以这样做:
nmap -n -sP 192.168.1.* | awk '{ if ($0 ~ /Nmap scan/) { ip=$5 } if ($0 ~ /MAC/) { mac=$3;det[mac]=ip } } END { for ( i in det ) { system("echo \""i" "det[i]"\" > "i"_"det[i]".txt") } }'
这将获取nmap的输出,然后搜索“Nmap scan”并将ip地址放在变量ip中,然后将“MAC”放置在mac中。然后使用ip地址和MAC地址创建一个数组。然后循环,并使用awk系统函数创建具有ip和MAC地址的文件。