Shell脚本实现判断IP地址是否在一个ip段内代码分享
程序员文章站
2023-02-13 23:15:35
cat ipcalc.sh
#!/bin/bash
ip=$1
if [ -z $ip ]
then
echo -e “\e[31;42m sh ipca...
cat ipcalc.sh #!/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 -e “\e[31;42m $ip in ipset $mask \e[0m” exit fi done<ipset.conf
ipset.conf 格式
more ipset.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
运行 sh ipcalc.sh ip地址
效率 不高 哎 下次改成perl 试试
/usr/bin/ipcalc 这个不是系统自带的命令 是一个perl版本的