Использование команды 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.