It’s not easy to perform bulk DNS resolution when you have many DNS/IPs to control. Here is a simple script allowing you to perform DNS resolution over a list of DNS entries or IPs.
Here is a list of DNS (names and IPs) that we put in a file called listDNS.txt
www.python.org www.pyython.org 208.67.220.220 www.bing.com
Let’s copy that script that will do the job in a file called resolverDNS.sh
#!/bin/bash
# Script file - resolverDNS.sh
# Checking existence of arg
if [ "$1" == "" ]
then
# Display help if wrong usage
echo "Usage: /bin/bash resolverDNS.sh /path/to/file"
exit 35
else
# Loop over dns and resolve
while IFS='' read -r line || [[ -n "$line" ]]; do
dns=''
# Resolve reverse DNS
if [[ $line =~ ^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$ ]]; then
dns=`dig +noall +answer -x $line +short|tr 'n' ' '`
# Resolve A record
else
dns=`dig a $line +short|tr 'n' ' '`
fi
echo -e "$linetis resolving intot${dns}"
done < "$1"
fi
And now, execute it by passing file path as an arg, and see the output:
$ bash /home/user/resolverDNS.sh /home/user/listDNS.txt www.python.org is resolving into python.map.fastly.net. 151.101.60.223 www.pyython.org is resolving into 208.67.220.220 is resolving into resolver2.opendns.com. www.bing.com is resolving into www-bing-com.a-0001.a-msedge.net. a-0001.a-msedge.net. 204.79.197.200 13.107.21.200
Resolution are done for every line, depending on if it’s an IP or a name (and remain empty if it can’t resolve).
Feel free to adjust the script according to your needs!