Linux計算子網掩碼位數的shell指令碼

在實際工作中,會涉及到已知子網掩碼,需要求子網掩碼位數的情況。下面分享一個轉換的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

Linux計算子網掩碼位數的shell指令碼

Linux計算子網掩碼位數的shell指令碼

Linux計算子網掩碼位數的shell指令碼

善心積福!