Использование команды dig в python - PullRequest
17 голосов
/ 08 марта 2011

Просто предупреждаю, что мои навыки в Python практически отсутствуют, но я пытаюсь учиться на ходу.

В выходные я делаю несколько изменений через нашу панель управления DNS, чтобы получить около 58 CNAMES(просто меняя место назначения)

И вместо того, чтобы проверять изменения, введенные в действие для каждой отдельной записи, мне было интересно, есть ли способ написать список раскопок для каждого CNAME в python?

Команда копания, которую я использую, будет выглядеть примерно так

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 ]

44 голосов
/ 08 марта 2011

Вполне возможно вызвать dig из python, это, вероятно, избавит вас от необходимости просто использовать библиотеку python.Взгляните на dnspython , который, вероятно, сделает все проще - плюс вам не нужно анализировать выходной формат.

4 голосов
/ 08 марта 2011

os.system устарело.Использовать подпроцесс. Открыть :

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.
...