【整理】Linux判断是否ip,Shell脚本实现判断IP地址是否在一个ip段内

前言

这段时间有新的需求,nginx里的白名单里有ip段,然而我的脚本识别不出来,上网查然后发现了很多关于判断是否在ip段内的网页,但是直接复制黏贴不能用,这里进行了一些代码的排错。

安装

apt-get install ipcalc

ipcalc命令是一个简单的ip地址计算器,可以完成简单的IP地址计算任务

具体用法:https://blog.csdn.net/wj78080458/article/details/86839726

vim /home/lee/dcr/iprange.conf

58.24.64.0/18
58.24.0.0/18
58.24.128.0/18
58.24.192.0/18
58.25.128.0/18
58.25.192.0/18
64.254.111.0/24
#!/bin/bash
IP=$1
if [ -z $IP ]
then
        echo -e "\e[31;42m sh ipcalc.sh IP \e[0m"
        exit
fi
while read MASK
do
        min=`/usr/bin/ipcalc $MASK|awk '/HostMin:/{print $2}'`
        max=`/usr/bin/ipcalc $MASK|awk '/HostMax:/{print $2}'`
        MIN=`echo $min|awk -F"." '{printf"%.0f\n",$1*256*256*256+$2*256*256+$3*256+$4}'`
        MAX=`echo $max|awk -F"." '{printf"%.0f\n",$1*256*256*256+$2*256*256+$3*256+$4}'`
        IPvalue=`echo $IP|awk -F"." '{printf"%.0f\n",$1*256*256*256+$2*256*256+$3*256+$4}'`
        if [ "$IPvalue" -gt "$MIN" ] && [ "$IPvalue" -lt "$MAX" ]
        then
                echo "$IP"
                exit              # 这边一定要注意exit要缩进,否则脚本每次都会将下面的else跑完
        else
                echo "$IP"
        fi
done</home/lee/dcr/iprange.conf

 参考

https://www.jb51.net/article/68168.htm

猜你喜欢

转载自blog.csdn.net/lengyer/article/details/118025526