1111
1212DIR=$( dirname $0 )
1313RBL=$DIR /rbl_list.txt
14+ ADNS_CMD=$( type -a adnshost | awk ' {print $3}' )
15+ DIG_CMD=$( type -a dig | awk ' {print $3}' )
1416
1517function process_ip {
1618 if [[ $1 == * /* ]]; then
17- echo " $( prips $1 ) "
19+ echo " $( prips $1 ) "
1820 else
19- echo " $1 "
21+ echo " $1 "
2022 fi
2123}
2224
2325if [[ $1 == " check" ]]; then
24- dig +short +time=1 +tries=2 $2 | grep " 127.0.0."
26+ $DIG_CMD +short +time=1 +tries=2 $2 | grep " 127.0.0."
2527elif [[ $1 == " listcheck" ]]; then
2628 RBL_C=$( cat " $RBL " | grep -v " #" )
2729
2830 while read -r var; do
2931 if [[ $( dig 1.1.1.1.$var +time=1 2>&1 | grep timed | wc -l) == " 1" ]]; then
30- echo " $var timed out"
32+ echo " $var timed out"
3133 fi
3234 done <<< " $RBL_C"
3335elif [[ $1 == " detailscheck" ]]; then
@@ -40,11 +42,10 @@ elif [[ $1 == "detailscheck" ]]; then
4042 Z=$( echo $2 | cut -d. -f4 )
4143
4244 while read -r var; do
43- CHECK=$( dig +short $Z .$Y .$X .$W .$var | grep " 127.0.0." | wc -l)
44-
45+ CHECK=$( $DIG_CMD +short $Z .$Y .$X .$W .$var | grep " 127.0.0." | wc -l)
4546 if [[ $CHECK -gt 0 ]]; then
46- REASON=$( dig +short $Z .$Y .$X .$W .$var TXT)
47- echo " $i blacklisted on $var for: $REASON "
47+ REASON=$( $DIG_CMD +short $Z .$Y .$X .$W .$var TXT)
48+ echo " $i blacklisted on $var for: $REASON "
4849 fi
4950 done <<< " $RBL_C"
5051elif [[ $1 == " details" ]]; then
@@ -56,24 +57,28 @@ elif [[ $1 == "details" ]]; then
5657elif [[ $1 == " count" ]]; then
5758 COUNT=0
5859 RBL_C=$( cat " $RBL " | grep -v " #" )
59-
60+ JOBS= " "
6061 for var_i in " ${@: 2} "
6162 do
6263 while read -r var; do
6364 W=$( echo $var | cut -d. -f1 )
6465 X=$( echo $var | cut -d. -f2 )
6566 Y=$( echo $var | cut -d. -f3 )
6667 Z=$( echo $var | cut -d. -f4 )
67- R=$( echo " $RBL_C " | sed -e " s/^/$Z .$Y .$X .$W ./g" | parallel --max-procs 100 bash " $0 " check {} | wc -l )
68- let " COUNT=R+COUNT "
68+ R=$( echo " $RBL_C " | sed -e " s/^/$Z .$Y .$X .$W ./g" )
69+ JOBS= " $JOBS$R "
6970 done <<< " $(process_ip $var_i)"
7071 done
71- echo $COUNT
72+ if [ -z $ADNS_CMD ]; then
73+ echo " $JOBS " | parallel --max-procs 15 $DIG_CMD +short +time=1 +tries=2 {} | grep " 127.0.0." | wc -l
74+ else
75+ adnshost --quiet -a $( echo " $JOBS " | tr " \\ n" " " ) | grep " 127.0.0." | wc -l
76+ fi
7277else
7378 echo " Usage:"
7479 echo " $0 listcheck - Verify that all DNSBLS in the list are responding within a reasonable time (online)"
7580 echo " $0 details [ip1] [...] - Fetch details for all RBL entries for one or many IP addresses"
7681 echo " $0 count [ip1] [...] - Fetch a total count of RBL entries for many IP addresses"
7782 echo " "
7883 echo " IP address can be either a single address or network in CIDR form"
79- fi
84+ fi
0 commit comments