Initial commit
This commit is contained in:
28
snippets/netmask2cidr.sh
Executable file
28
snippets/netmask2cidr.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
netmask2cidr() {
|
||||
case $1 in
|
||||
0x*)
|
||||
local hex=${1#0x*} quad=
|
||||
while [ -n "${hex}" ]; do
|
||||
local lastbut2=${hex#??*}
|
||||
quad=${quad}${quad:+.}0x${hex%${lastbut2}*}
|
||||
hex=${lastbut2}
|
||||
done
|
||||
set -- ${quad}
|
||||
;;
|
||||
esac
|
||||
|
||||
local i= len=
|
||||
local IFS=.
|
||||
for i in $1; do
|
||||
while [ ${i} != "0" ]; do
|
||||
len=$((${len} + ${i} % 2))
|
||||
i=$((${i} >> 1))
|
||||
done
|
||||
done
|
||||
|
||||
echo "${len}"
|
||||
}
|
||||
|
||||
netmask2cidr $1
|
||||
Reference in New Issue
Block a user