Использование команды dig в python
просто предупреждение, мои навыки python почти не существуют, но я пытаюсь учиться, как я иду.
Я делаю несколько изменений через нашу панель управления DNS в выходные дни примерно до 58 CNAMES (просто меняя место назначения)
и вместо того, чтобы проверять изменения в прямом эфире для каждой отдельной записи, мне было интересно, есть ли способ написать список раскопок для каждого CNAME в python?
команда dig, которую я использую, будет примерно такой
dig @ns1.netnames.net www.rac.co.uk CNAME
и я ожидал бы увидеть rac-secure.gslb2.rac.co.uk
вернулся.
я попробовал что-то вроде:
import os
os.system( 'dig<exampledomain.com>'CNAME )
но это не сработало (как я уже упоминал, мои навыки python отсутствуют), я на правильном пути, или я должен использовать что-то вроде dnspython? Я использовал модуль dnspython раньше с (много) помощью сообщества переполнения стека, но я нахожу документацию действительно запутанной.
любой указатели в правильном направлении будет очень признателен.
в отношении
Крис.
2 ответов
вполне возможно вызвать копать из python, это, вероятно, сэкономит вам работу, чтобы просто использовать библиотеку python. Взгляните на dnspython что, вероятно, сделает все проще-плюс вам не нужно анализировать формат вывода.
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
устарела. Использовать подпроцесс.К 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.