首页 > 系统相关 >【shell脚本】利用Nmap扫描结果提取IP地址

【shell脚本】利用Nmap扫描结果提取IP地址

时间:2024-11-02 23:11:09浏览次数:4  
标签:shell Nmap ip 扫描 MAC awk IP地址 print

原创 脚本家园

在网络安全和运维管理中,我们常常需要扫描网络以获取设备信息,并对这些信息进行处理和分析。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地址,并输出。

逐步解析

  1. 扫描网络并保存结果

首先,我们使用Nmap扫描整个网段,并将结果保存到文件ip中。这一行被注释掉了,因为在实际脚本执行之前,我们假设这个结果文件已经存在。

#nmap 192.168.22.0/24>ip

你可以手动运行以下命令来生成这个文件:

nmap 192.168.22.0/24 > ip
  1. 提取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地址)。
  1. 查找对应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

相关文章

  • CTF学习(17)MISC(后门查杀/webshell后门)
    后门查杀1.解压获得html文件夹(入门用的工具题吗)--->使用D盾以文本文件格式打开include.php文件后发现pass处有段md5数据(实为flag)(还是不太明白md5加密的特征,只是长度一样吗)FLAG:flag{6ac45fb83b3bc355c024f5034b947dd3}webshell后门1.根据题目提示得知密码即为flag--......
  • CommandNotFoundError: Your shell has not been properly configured to use ‘conda
    WindowsPowerShell版权所有(C)MicrosoftCorporation。保留所有权利。安装最新的PowerShell,了解新功能和改进!https://aka.ms/PSWindowsPSD:\projects\learnYolo\yolov5-5.0>condaactivatepytorchCommandNotFoundError:Yourshellhasnotbeenproperlyconfigure......
  • shell+expect创建多个节点无密码ssh
    #!/bin/bashpassword="liwanliang"#1.echo"为每个节点创建公密钥对..."fornodeinnode{061..065}doecho"${node}开始操作"expect-c"settimeout1log_user0spawnsshroot@${node}......
  • Windows 基础(一):深入理解Windows,掌握命令行与Shell
    内容预览≧∀≦ゞWindows基础(一)声明导语一、Windows和Linux的区别二、Windows的ShellShell和终端的区别1.命令提示符(CMD)2.WindowsPowerShell3.WindowsTerminal4.WindowsSubsystemforLinux(WSL)三、Windows常用命令1.文件与目录操作2.文本处理3.......
  • 【shell脚本】使用 Shell 脚本比较和同步目录:自动化文件管理的利器
    原创日常运维文档在系统管理中,比较两个目录的内容是一项常见任务,尤其在数据备份和服务器维护时,它显得尤为重要。为此,我们可以使用Shell脚本来简化这个过程,实现自动化。下面将对一个名为compare_files.sh的脚本进行详细介绍,该脚本能够比较目录大小并使用rsync检查内容一......
  • shell脚本之awk的使用
    步骤一:awk的基本用法基本操作方法格式1:awk[选项]'[条件]{指令}'文件格式2:前置指令|awk[选项]'[条件]{指令}'其中print是最常用的编辑指令;若有多条编辑指令,可用分号分隔。Awk过滤数据时支持仅打印某一列,如第2列、第5列等。处理文本时,默认将空格、制表符作为分隔符。......
  • Linux-shell实例手册-网络操作
    本文章讲解的是在linux下跟网络相关的一些操作和命令,喜欢就点赞收藏哦,方便随时查阅!文章目录1Linux下网络基本命令2netstat3ssh4网卡配置文件5route6解决ssh链接慢7ftp上传8nmap9 流量切分线路10snmp1Linux下网络基本命令   rz  #通过ssh上传......
  • SHELL 猜随机数
    猜随机数脚本生成一个100以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,猜小了或猜大了,直至用户猜对脚本结束。#!/bin/bash#RANDOM为系统自带的系统变量,值为0-32767的随机数#使用取余算法将随机数变为1-100的随机数num=$[RANDOM%100+1]#使用read提示用户猜数......
  • 沨鸾的Shell小技巧
    跟着沨鸾学shell,学到最后只会喵喵喵。正经部分:语法规范:变量要加{}括起来。函数最好加个function关键字。头部一定要有释伴(shebang)。记得写注释,要不然也就上帝能看懂你写的什么了。退出时要有返回状态。能用[[]]就别用[]。尽量用printf代替echo使用以提供更好的兼容性。......
  • ShellScript
    StorageSrvShelScript编写添加用户的脚本,存储在/shells/userAdd.sh目录。当有新员工入职时,管理员运行脚本为其创建公司账号。自动分配客户端账号、公司邮箱、samba目录及权限、网站账号等。以userAddlifei的方式运行脚本,lifei为举例的员工姓名前提条件完成了LDAP服务......