Vendredi 23 novembre 2018

2017-06-03-Requetes-DNS-depuis-un-fichier-liste-en-CSV

Requêtes DNS depuis un fichier/liste en CSV

Il n’est pas facile de faire des résolutions DNS par lot lorsque vous avez de nombreux DNS/IPs à vérifier. Voici un script simple qui vous permet d’effectuer les résolutions DNS en parcourant une liste d’entrées DNS ou d’IPs.

Voici une list de DNS (noms et IPs) que nous mettons dans un fichier appelé listDNS.txt

www.python.org
www.pyython.org
208.67.220.220
www.bing.com

Copions maintenant ce script qui va effectuer tout le travail dans un fichier appelé 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 "$line\tis resolving into\t${dns}"
  done < "$1"
fi

Et maintenant, exécutons le en passant le fichier contenant la liste de DNS en argument, et regardons la sortie standard :

$ 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 

Les résolutions sont faites pour chaque ligne, selon si c’est une IP ou un nom de serveur (et reste vide s’il est impossible de résoudre).
N’hésitez pas à modifier le script selon vos besoins !