在實際工作中,會涉及到已知子網掩碼,需要求子網掩碼位數的情況。下面分享一個轉換的shell指令碼。
首先編輯一個指令碼:
vim maskdigits。sh:
#! /bin/bash
#Author:luxu
#Date:2021-07-27
netMask=$1
maskdigits(){
a=$(echo “$1”|awk -F “。” ‘{print $1 “ ”$2“ ”$3“ ”$4}’)
for num in $a;
do
while [ $num != 0 ]; do
echo -n $(($num%2))>>/tmp/num;
num=$(($num/2));
done
done
echo $(grep -o “1” /tmp/num| wc -l)
rm -rf /tmp/num
}
maskNum=`echo ${#netMask}`
if [ $maskNum != 2 ]; then
netMask=`maskdigits “$netMask”`
fi
echo $netMask
編輯完指令碼,需要新增執行許可權。
chmod +x maskdigits。sh
執行指令碼的時候,舉例如下:
。/maskdigits。sh 255。255。240。0
輸出結果:20
善心積福!