linux的掩码长度,Bash 实现子网掩码与前缀长度互转
前綴長度轉(zhuǎn)換為子網(wǎng)掩碼#!/bin/bash
# date: 2018-03-03
# license: GPLv3 https://www.gnu.org/licenses/gpl-3.0.txt
# author: nanpuyue https://blog.nanpuyue.com
num=$((4294967296 - 2**(32-$1)))
for i in {3..0};do
echo -n $((num / 256**i))
num=$((num % 256**i))
(($i == 0)) && echo || echo -n .
done
這段腳本完全使用 Bash 內(nèi)置函數(shù)實(shí)現(xiàn),不調(diào)用外部進(jìn)程。
子網(wǎng)掩碼轉(zhuǎn)換為前綴長度#!/bin/bash
# date: 2018-09-15
# license: GPLv3 https://www.gnu.org/licenses/gpl-3.0.txt
# author: nanpuyue https://blog.nanpuyue.com
n=0;b=3
for i in ${1//./ };do
if ((0 <= i < 256));then
let n+=$((2**(b*8) * i))
let b--
else
exit 1
fi
done
[[ $(echo "obase=2;$n"|bc) =~ ^(1+)0*$ ]] &&\
((${#BASH_REMATCH[0]} == 32)) &&\
echo ${#BASH_REMATCH[1]}
本來也想用純 Bash 實(shí)現(xiàn),但為了腳本的簡潔還是調(diào)用了 bc 命令,當(dāng)給出的子網(wǎng)掩碼有誤時(shí),輸出結(jié)果為空同時(shí)腳本返回值為 1 。
Gist:
總結(jié)
以上是生活随笔為你收集整理的linux的掩码长度,Bash 实现子网掩码与前缀长度互转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 寻找http://localhost/p
- 下一篇: Linux 学习“安装CentOS与多重