Skip to content

Commit e18c76b

Browse files
authored
Update dnstest.sh
1 parent 2aadf5d commit e18c76b

File tree

1 file changed

+18
-29
lines changed

1 file changed

+18
-29
lines changed

dnstest.sh

Lines changed: 18 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
#!/usr/bin/env bash
22

33
# Check for required commands
4-
command -v bc > /dev/null || { echo "error: bc was not found. Please install bc."; exit 1; }
5-
{ command -v drill > /dev/null && dig=drill; } || { command -v dig > /dev/null && dig=dig; } || { echo "error: dig was not found. Please install dnsutils."; exit 1; }
4+
command -v bc > /dev/null || { echo "error: bc not found. Please install bc."; exit 1; }
5+
command -v drill > /dev/null && dig="drill" || { command -v dig > /dev/null && dig="dig" || { echo "error: dig not found. Please install dnsutils."; exit 1; } }
66

77
# Extract nameservers from /etc/resolv.conf
8-
NAMESERVERS=$(awk '/^nameserver/ {print $2}' /etc/resolv.conf | sed 's/\(.*\)/&#&/')
8+
NAMESERVERS=$(awk '/^nameserver/ {print $2}' /etc/resolv.conf)
99

1010
# Define DNS providers
11-
PROVIDERSV4=$(cat <<EOF
11+
PROVIDERSV4="
12+
42.247.23.161#DNS-BERSAMA
1213
223.5.5.5#AliDNS
1314
103.87.68.23#BebasDNS-Malware
1415
1.1.1.1#Cloudflare
@@ -37,10 +38,10 @@ PROVIDERSV4=$(cat <<EOF
3738
198.54.117.10#SafeServe
3839
76.76.2.0#ControlD
3940
172.104.162.222#OpenNIC
40-
EOF
41-
)
41+
"
4242

43-
PROVIDERSV6=$(cat <<EOF
43+
PROVIDERSV6="
44+
2402:1200:155:23:43:247:23:161#DNS-BERSAMA-v6
4445
2400:3200::1#AliDNS-v6
4546
2606:4700:4700::1111#Cloudflare-v6
4647
2606:4700:4700::1112#CloudflareMalware-v6
@@ -57,60 +58,48 @@ PROVIDERSV6=$(cat <<EOF
5758
2001:470:20::2#HE.NET-v6
5859
2620:74:1b::1:1#Verisign-v6
5960
2001:df1:7340:c::beba:51d#BebasDNS-Malware-v6
60-
EOF
61-
)
61+
"
6262

6363
# Test for IPv6 support
64-
hasipv6=""
65-
if $dig +short +tries=1 +time=2 @2606:4700:4700::1111 alsyundawy.my.id | grep -q -E '172\.67\.134\.149|104\.21\.6\.70'; then
66-
hasipv6="true"
64+
if $dig +short +tries=1 +time=2 @2606:4700:4700::1111 alsyundawy.my.id | grep -qE '172\.67\.134\.149|104\.21\.6\.70'; then
65+
hasipv6=true
6766
fi
6867

69-
# Determine providers to test based on input
68+
# Determine providers to test
7069
providerstotest=$PROVIDERSV4
7170
case "$1" in
7271
ipv6)
73-
if [ -z "$hasipv6" ]; then
74-
echo "error: IPv6 support not found. Unable to do the ipv6 test."
75-
exit 1
76-
fi
72+
[ -z "$hasipv6" ] && { echo "error: IPv6 support not found."; exit 1; }
7773
providerstotest=$PROVIDERSV6
7874
;;
79-
ipv4)
80-
providerstotest=$PROVIDERSV4
81-
;;
8275
all)
83-
providerstotest="$PROVIDERSV4"
84-
if [ -n "$hasipv6" ]; then
85-
providerstotest="$PROVIDERSV4 $PROVIDERSV6"
86-
fi
76+
[ -n "$hasipv6" ] && providerstotest="$PROVIDERSV4 $PROVIDERSV6"
8777
;;
8878
esac
8979

9080
# Domains to test
9181
DOMAINS2TEST="google.com amazon.com facebook.com www.youtube.com www.reddit.com wikipedia.org twitter.com www.tokopedia.com whatsapp.com tiktok.com"
9282

9383
# Display header
94-
totaldomains=$(echo $DOMAINS2TEST | wc -w)
84+
totaldomains=$(wc -w <<< "$DOMAINS2TEST")
9585
printf "%-21s" ""
96-
for i in $(seq 1 $totaldomains); do
97-
printf "%-8s" "test$i"
98-
done
86+
for i in $(seq 1 $totaldomains); do printf "%-8s" "test$i"; done
9987
printf "%-8s\n" "Average"
10088

10189
# Perform tests
10290
for p in $NAMESERVERS $providerstotest; do
10391
pip=${p%%#*}
10492
pname=${p##*#}
10593
ftime=0
106-
10794
printf "%-21s" "$pname"
95+
10896
for d in $DOMAINS2TEST; do
10997
ttime=$($dig +tries=1 +time=2 +stats @$pip $d | awk '/Query time:/ {print $4}')
11098
ttime=${ttime:-1000}
11199
printf "%-8s" "${ttime}ms"
112100
ftime=$((ftime + ttime))
113101
done
102+
114103
avg=$(bc <<< "scale=2; $ftime/$totaldomains")
115104
printf "%-8s\n" "$avg"
116105
done

0 commit comments

Comments
 (0)