Add check_dnsbl.sh
This commit is contained in:
commit
37825d9db5
50
check_dnsbl.sh
Normal file
50
check_dnsbl.sh
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Test if any IP4 and IP6 addresses of a hostname blocked on a DNSBL
|
||||||
|
# 2024-02-23
|
||||||
|
# by Sandros
|
||||||
|
|
||||||
|
# Parameter check
|
||||||
|
if [[ $# -ne 2 ]]; then
|
||||||
|
echo "Usage: ./${0##*/} <hostname> <blacklist service>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get IPs
|
||||||
|
IPS=$(dig +short $1 A | sort -u)
|
||||||
|
IP6S=$(dig +short $1 AAAA | sort -u)
|
||||||
|
|
||||||
|
IPSP=""
|
||||||
|
|
||||||
|
# Prepare IP4 addresses
|
||||||
|
if [ ! -z "$IPS" ]; then
|
||||||
|
for IP in $IPS; do
|
||||||
|
# Check IP format
|
||||||
|
if [[ ! ${IP##*[[:space:]]} =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
||||||
|
# skip if invalid
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Reverse IP octet order
|
||||||
|
IPSP="$IPSP $(sed -r 's/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/\4.\3.\2.\1/' <<< ${IP##*[[:space:]]})."
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prepare IP6 addresses
|
||||||
|
if [ ! -z "$IP6S" ]; then
|
||||||
|
for IP6 in $IP6S; do
|
||||||
|
IPSP="$IPSP $(sipcalc $IP6 | fgrep Expanded | cut -d '-' -f 2 | sed 's/://g' | rev | sed 's/[0-9a-f]/&./g')"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Loop through IPs
|
||||||
|
listed=0
|
||||||
|
for IP in $IPSP; do
|
||||||
|
# Performs the actual lookup against blacklists
|
||||||
|
if host -W 2 -t a $IP$2 >/dev/null 2>&1; then
|
||||||
|
((listed++))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo $listed
|
||||||
|
exit 0
|
Loading…
Reference in New Issue
Block a user