Nmap bash动态创建文件

时间:2017-07-02 12:41:26

标签: bash parsing awk nmap

我正在编写一个脚本,使用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

我不知道如何智能地解析它

2 个答案:

答案 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地址的文件。