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!