原创 脚本家园
在网络安全和运维管理中,我们常常需要扫描网络以获取设备信息,并对这些信息进行处理和分析。Nmap(Network Mapper)是一款功能强大的网络扫描工具,它可以帮助我们获取网络中的设备信息,包括IP地址、MAC地址、开放的端口等。今天,我们将通过一篇实战文章,介绍如何利用Bash脚本结合Nmap扫描结果,提取特定设备的IP地址。
前提条件
在开始之前,请确保你已经安装了Nmap工具。如果还没有安装,可以通过以下命令进行安装:
sudo apt-get install nmap
此外,本文假设你有一个局域网,其网段为192.168.22.0/24,并且你希望扫描这个网段中的设备,提取特定MAC地址对应的IP地址。
脚本解析
下面是一个完整的Bash脚本,它将扫描指定网段并提取特定MAC地址(VMware虚拟机的MAC地址)对应的IP地址。我们将逐步解析这个脚本,并解释每一部分的功能。
#!/bin/bash
#By:lyshark
#nmap 192.168.22.0/24>ip
MAC=`cat ip |awk '$1 == "MAC" && $NF == "(VMware)"{print $3}'`
for i in `seq 1 20`
do
temp=`echo ${MAC[@]} |awk '{print $i}'`
IP=`cat ip |grep -B5 $temp |grep "Nmap scan"|awk '{print $5}'`
echo $IP |awk '{print $1}'
done
脚本功能概述
扫描网络并保存结果:使用Nmap扫描指定网段,并将结果保存到文件ip中。
提取MAC地址:从扫描结果中提取出所有VMware虚拟机的MAC地址。
查找对应IP地址:针对每个提取到的MAC地址,在扫描结果中查找对应的IP地址,并输出。
逐步解析
- 扫描网络并保存结果
首先,我们使用Nmap扫描整个网段,并将结果保存到文件ip中。这一行被注释掉了,因为在实际脚本执行之前,我们假设这个结果文件已经存在。
#nmap 192.168.22.0/24>ip
你可以手动运行以下命令来生成这个文件:
nmap 192.168.22.0/24 > ip
- 提取MAC地址
接下来,我们使用awk命令从文件ip中提取出所有VMware虚拟机的MAC地址。
MAC=`cat ip |awk '$1 == "MAC" && $NF == "(VMware)"{print $3}'`
cat ip:读取文件ip的内容。
awk '$1 == "MAC" && $NF == "(VMware)"{print $3}':使用awk命令匹配包含“MAC”和“(VMware)”的行,并提取出第三列的内容(即MAC地址)。
- 查找对应IP地址
然后,脚本通过一个循环,针对每个提取到的MAC地址,在扫描结果中查找对应的IP地址。
for i in `seq 1 20`
do
temp=`echo ${MAC[@]} |awk '{print $i}'`
IP=`cat ip |grep -B5 $temp |grep "Nmap scan"|awk '{print $5}'`
echo $IP |awk '{print $1}'
done
for i in seq 1 20``:循环20次,假设最多有20个MAC地址。
temp=echo {MAC[@]} |awk '{print i}'``:提取第i个MAC地址。
IP=cat ip |grep -B5 temp |grep "Nmap scan"|awk '{print 5}'``:在文件ip中查找包含该MAC地址的行,并向上查找5行(-B5),然后匹配包含“Nmap scan”的行,提取第五列的内容(即IP地址)。
echo $IP |awk '{print $1}':输出提取到的IP地址。
完成脚本:
#!/bin/bash
# 扫描网络并保存结果到文件ip
nmap 192.168.22.0/24 > ip
# 提取所有VMware虚拟机的MAC地址
MAC=(`cat ip | awk '$1 == "MAC" && $NF == "(VMware)" {print $3}'`)
# 遍历每个MAC地址,查找对应的IP地址
for mac in "${MAC[@]}"
do
# 在扫描结果中查找包含该MAC地址的行,并提取IP地址
IP=(`cat ip | grep -B5 "$mac" | grep "Nmap scan" | awk '{print $5}'`)
# 输出IP地址
for ip in "${IP[@]}"
do
echo "Found IP: $ip for MAC: $mac"
done
done
脚本执行与测试
现在,我们可以执行优化后的脚本,并测试其功能。
执行脚本
bash script.sh
查看输出:
脚本将输出每个VMware虚拟机的MAC地址及其对应的IP地址。例如:
Found IP: 192.168.22.2 for MAC: 00:50:56:AA:BB:CC
Found IP: 192.168.22.3 for MAC: 00:50:56:DD:EE:FF
实战应用
这个脚本在实际工作中有哪些应用场景呢?以下是一些常见的应用场景:
网络资产管理:通过定期扫描网络,提取设备信息,生成网络资产清单。
安全审计:扫描网络中的设备,检查是否存在未授权的设备或安全漏洞。
故障排查:通过快速定位设备IP地址,加速故障排查过程。
自动化运维:结合其他自动化工具,实现网络设备的批量配置和管理。
总结
本文介绍了一个利用Bash脚本结合Nmap扫描结果提取IP地址的实战案例。通过解析脚本的每一部分,我们了解了如何使用awk、grep等常用命令处理文本数据,并优化了脚本以提高其可读性和健壮性。这个脚本不仅可以帮助我们快速提取网络中的设备信息,还可以应用于网络资产管理、安全审计、故障排查等多个场景。希望这篇文章对你有所帮助,如果你有任何问题或建议,请随时留言交流。
标签:shell,Nmap,ip,扫描,MAC,awk,IP地址,print From: https://www.cnblogs.com/o-O-oO/p/18522600