Utilisation de la commande dig en python
juste un avertissement, mes compétences en python sont presque inexistantes, mais j'essaie d'apprendre au fur et à mesure.
je fais quelques changements via notre panneau de contrôle DNS pendant le week-end à environ 58 CNAMES (je change juste de destination)
et plutôt que de vérifier que les changements sont allés en direct pour chaque enregistrement individuel, je me demandais s'il y avait un moyen de script une liste de digs pour chaque CNAME en python?
la commande dig que j'utilise serait quelque chose comme ceci
dig @ns1.netnames.net www.rac.co.uk CNAME
et je m'attends à voir rac-secure.gslb2.rac.co.uk
retourné.
j'ai essayé quelque chose comme:
import os
os.system( 'dig<exampledomain.com>'CNAME )
mais cela ne semble pas fonctionner (comme je l'ai mentionné mes compétences en python font défaut), suis-je sur la bonne voie, ou devrais-je utiliser quelque chose comme dnspython? J'ai déjà utilisé le module dnspython avec (beaucoup) l'aide de la communauté stack overflow, mais je trouve la documentation vraiment confuse.
tout pointeur dans la bonne direction serait grandement apprécié.
Cordialement
Chris.
2 réponses
il est tout à fait possible d'invoquer dig à partir de python, vous économiserez probablement du travail en utilisant simplement une bibliothèque python. Jetez un oeil à dnspython qui fera probablement tout plus facile - en plus vous n'avez pas à analyser le format de sortie.
import socket
import dns.resolver
# Basic query
for rdata in dns.resolver.query('www.yahoo.com', 'CNAME') :
print rdata.target
# Set the DNS Server
resolver = dns.resolver.Resolver()
resolver.nameservers=[socket.gethostbyname('ns1.cisco.com')]
for rdata in resolver.query('www.yahoo.com', 'CNAME') :
print rdata.target
os.system
est obsolète. Utilisez sous-processus.Popen:
import subprocess
import shlex
cmd='dig @ns1.netnames.net www.rac.co.uk +short'
# cmd='dig @ns1.netnames.net www.rac.co.uk CNAME'
proc=subprocess.Popen(shlex.split(cmd),stdout=subprocess.PIPE)
out,err=proc.communicate()
print(out)
# rac-secure.gslb.norwichunion.com.