使用 bash 在 Linux 中获取子网掩码
Get Subnet mask in Linux using bash
我正在使用 bash 通过该脚本获取我机器的 IP 地址:
_MyGW="$( ip route get 8.8.8.8 | awk 'N=3 {print $N}' )"
现在我正在尝试获取这种类型的子网掩码:
192.168.1.0/24
但我不知道该怎么做。
有几种方法可以实现这一点:
首先:要以 255.255.255.0 格式打印掩码,您可以使用:
/sbin/ifconfig wlan0 | awk '/Mask:/{ print ;} '
其次:我们可以使用ip命令获取格式为192.168.1.1/24的掩码
ip -o -f inet addr show | awk '/scope global/ {print }'
更好的方法是:
ifconfig eth0 | awk '/netmask/{split(,a,":"); print a[1]}'
您可以将 eth0 替换为您想要的任何其他接口
对我来说,一个简单的方法是:
IP=$(ifconfig eth0 | grep -w inet | cut -d" " -f10) # device IP, e.g. 11.1.1.43
IP_RANGE=$(echo $IP | cut -d"." -f1-3).0/24 # subnet 11.1.1.0/24
用ifconfig
显示的正确界面替换课程eth0
。
这就是我通过 bash/awk:
获取 IP 和子网掩码的方式
IFCONFIG=$(ifconfig eth0)
IPETH=$(echo "$IFCONFIG" | grep 'inet addr:' | cut -d: -f2 | awk '{ print }')
MASK=$(echo "$IFCONFIG" | awk '/Mask/{split(,a,":"); split(a[2],m,"."); h=m[1]*16777216+m[2]*65536+m[3]*256+m[4]; s=0; for(i=0; i < 32; i++) { s+=and(h,1); h/=2 } print s; }')
echo ${IPETH}/${MASK}
根据您的 ifconfig
版本,您必须使用 /Mask/
或 /netmask/
来获取子网掩码。我需要这个小摆弄,因为我的系统上没有 ip
。
这给了我例如
172.29.11.12/24
我正在使用 bash 通过该脚本获取我机器的 IP 地址:
_MyGW="$( ip route get 8.8.8.8 | awk 'N=3 {print $N}' )"
现在我正在尝试获取这种类型的子网掩码:
192.168.1.0/24
但我不知道该怎么做。
有几种方法可以实现这一点:
首先:要以 255.255.255.0 格式打印掩码,您可以使用:
/sbin/ifconfig wlan0 | awk '/Mask:/{ print ;} '
其次:我们可以使用ip命令获取格式为192.168.1.1/24的掩码
ip -o -f inet addr show | awk '/scope global/ {print }'
更好的方法是:
ifconfig eth0 | awk '/netmask/{split(,a,":"); print a[1]}'
您可以将 eth0 替换为您想要的任何其他接口
对我来说,一个简单的方法是:
IP=$(ifconfig eth0 | grep -w inet | cut -d" " -f10) # device IP, e.g. 11.1.1.43
IP_RANGE=$(echo $IP | cut -d"." -f1-3).0/24 # subnet 11.1.1.0/24
用ifconfig
显示的正确界面替换课程eth0
。
这就是我通过 bash/awk:
获取 IP 和子网掩码的方式IFCONFIG=$(ifconfig eth0)
IPETH=$(echo "$IFCONFIG" | grep 'inet addr:' | cut -d: -f2 | awk '{ print }')
MASK=$(echo "$IFCONFIG" | awk '/Mask/{split(,a,":"); split(a[2],m,"."); h=m[1]*16777216+m[2]*65536+m[3]*256+m[4]; s=0; for(i=0; i < 32; i++) { s+=and(h,1); h/=2 } print s; }')
echo ${IPETH}/${MASK}
根据您的 ifconfig
版本,您必须使用 /Mask/
或 /netmask/
来获取子网掩码。我需要这个小摆弄,因为我的系统上没有 ip
。
这给了我例如
172.29.11.12/24