欧卡2中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

需要三步,才能开始

只需两步,慢速开始

欧卡2入门方向盘选莱仕达V9莱仕达折叠便携游戏方向盘支架欢迎地图Mod入驻
查看: 6782|回复: 1
收起左侧

判断IP是否在一个网络中

[复制链接]
oppo 发表于 2017-8-17 07:57 | 显示全部楼层 |阅读模式
ip=$1
network=$2

net=`echo $network |cut -f1 -d'/'`
mask=`echo $network |cut -f2 -d'/'`
zero=$((32-mask))

M=""
for i in `seq 1 $mask`;do
        M="${M}1"
done
for k in `seq 1 $zero`;do
        M="${M}0"
done

M1=$((2#${M:0:8}))
M2=$((2#${M:8:8}))
M3=$((2#${M:16:8}))
M4=$((2#${M:24:8}))

ip1=`echo $ip |cut -f1 -d'.'`
ip2=`echo $ip |cut -f2 -d'.'`
ip3=`echo $ip |cut -f3 -d'.'`
ip4=`echo $ip |cut -f4 -d'.'`

n1=$((ip1&M1))
n2=$((ip2&M2))
n3=$((ip3&M3))
n4=$((ip4&M4))

n="$n1.$n2.$n3.$n4"

if [ "$n"x == "$net"x ];then
        echo "True: $ip in $network"
else
        echo "False: $ip not in $network"
fi

echo -e "\n====================="
echo "ip's NetWork: $n"
 楼主| oppo 发表于 2017-10-20 11:53 | 显示全部楼层
回复 打印

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系我们|手机版|欧卡2中国 ( 湘ICP备11020288号-1 )

GMT+8, 2024-11-25 12:48 , Processed in 0.033037 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表