概述

由于一些情况需要扫描指定IP网段及指定端口,故写出基于NMAP的SHELL脚本。

#!/bin/bash
#NMAP扫描指定的网段及端口是否存活
#By: [email protected]
#设置IP网段
Ip_Domain='192.144.238.1-254'
#IP地址的网段
Ip_Domain_Part=`echo $Ip_Domain |awk -F'.' '{print $1"."$2"."$3"."}'`
#IP地址从哪开始
Ip_Domain_Start=`echo $Ip_Domain |awk -F'-' '{print $1}'|awk -F'.' '{print $4}'`
#IP地址从哪结束
Ip_Domain_Stop=`echo $Ip_Domain |awk -F'-' '{print $2}'`
#指定端口列表分隔符为","
Ip_Prot_Domain='22,80,443'
#生成数组
Ip_Prot_List=(${Ip_Prot_Domain//,/ })  
#对IP地址进行循环
for Ip_Domain_Num in `seq "${Ip_Domain_Start}" "${Ip_Domain_Stop}"`
do
    #将IP地址网段和主机位合并
    Ip_Adderss_Code="${Ip_Domain_Part}${Ip_Domain_Num}"
    #判断IP地址是否为0或者255,反之则跳过
    if [ "${Ip_Domain_Num}" -eq 0 -o "${Ip_Domain_Num}" -eq 255 ];then
        #echo "当前 ${Ip_Adderss_Code} 地址不可用!"
        continue
    else
        #循环端口列表
        for Prot_Sum in ${Ip_Prot_List[@]}
        do
            #扫描指定IP及端口循环
            Ip_Domain_Status=`nmap "${Ip_Adderss_Code}" -p ${Prot_Sum} | awk "/^${Prot_Sum}/ {print \\$2}"`
            #判断值是否为空,如为空则可能代表IP地址不存在,具体需进行实际测试查看!
            if [ -z "${Ip_Domain_Status}" ];then
                echo "当前主机可能不存在!"
            else
                #输出结果
                echo "${Ip_Adderss_Code} Prot ${Prot_Sum} Status: ${Ip_Domain_Status}"
            fi
        done
    fi
done
END

本文标题:NMAP扫描指定的网段端口是否可用

本文作者:宇宙最帅的男人

本文链接:https://lolicp.com/linux/20211586.html

版权声明:转载或者引用本文内容请注明来源及原作者,本文著作权归作者 (宇宙最帅的男人) 所有。

除非另有说明,本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

最后修改:2021 年 06 月 15 日
如果觉得我的文章对你有用,请随意赞赏