vscripts/is_private
2023-02-10 01:05:13 +02:00

27 lines
557 B
Bash
Executable file

#!/usr/bin/env zsh
typeset -ga PRIVATE_RANGES=(
00001010 # 10.0.0.0/8
101011000001 # 172.16.0.0/12
1100000010101000 # 192.168.0.0/16
)
test_range() {
typeset net addr=$(printf '%.2x' ${(s:.:)1})
for net in $PRIVATE_RANGES; do
((16#$addr >> (32 - $#net) == 2#$net)) && return 0
done
}
report() {
typeset result='private' addr=$1 state=$2
((state)) && result='not private'
printf "%s is %s\n" $addr $result
exit $state
}
main() {
test_range $1 && report $1 0
report $1 1
}
main $1