shell 脚本:已知ip地址,子网掩码,求子网地址

在某些情况下,需要求子网

#!/bin/bash
get_ipgate(){
#获取ip地址
ip=$(echo $1 | cut -d '/' -f1)
#获取子网掩码
mask=$(echo $1 | cut -d '/' -f2)
#ip地址转换整数
ipgate_int=$(echo $ip | awk -F'.' '{print $1*(256^3) + $2*(256^2) + $3*256 + $4}')
#主机位:32 - mask
#按位运算,右移,ip地址移除主机位,保留网络位
#按位运算,左移,ip地址以0补全主机位
((ipgate = ((ipgate_int >> ((32 - mask)))) << ((32 - mask))))
#获取子网:整数转换ip地址,整数右移取低8位
echo $((ipgate >> 24 & 0xFF)).$((ipgate >> 16 & 0xFF)).$((ipgate >> 8 & 0xFF)).$((ipgate & 0xFF))
}
get_ipgate 192.168.2.20/24

 

posted @ 2022-12-26 14:06  竹蜻蜓vYv  阅读(579)  评论(0编辑  收藏  举报