Skip to content

Commit 4621d97

Browse files
committed
added adns option for high performance bulk checks
1 parent 9e00ec0 commit 4621d97

1 file changed

Lines changed: 18 additions & 13 deletions

File tree

rbl.sh

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,25 @@
1111

1212
DIR=$(dirname $0)
1313
RBL=$DIR/rbl_list.txt
14+
ADNS_CMD=$(type -a adnshost | awk '{print $3}')
15+
DIG_CMD=$(type -a dig | awk '{print $3}')
1416

1517
function 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

2325
if [[ $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."
2527
elif [[ $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"
3335
elif [[ $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"
5051
elif [[ $1 == "details" ]]; then
@@ -56,24 +57,28 @@ elif [[ $1 == "details" ]]; then
5657
elif [[ $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
7277
else
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

Comments
 (0)