| Server IP : 20.75.53.88 / Your IP : 216.73.217.72 [ Web Server : Apache System : Linux VMRALP-3 4.4.0-256-generic #290~14.04.1-Ubuntu SMP Thu Jun 20 09:24:50 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29+esm15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Domains : 3 Domains MySQL : ON | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/python-twisted-names/examples/ |
Upload File : |
#!/usr/bin/env python
# -*- test-case-name: twisted.names.test.test_examples -*-
# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.
"""
Print the Address records, Mail-Exchanger records and the Nameserver
records for the given domain name. eg
python testdns.py google.com
"""
import sys
from twisted.internet import defer
from twisted.internet.task import react
from twisted.names import client, dns, error
from twisted.python import usage
class Options(usage.Options):
synopsis = 'Usage: testdns.py DOMAINNAME'
def parseArgs(self, domainname):
self['domainname'] = domainname
def formatRecords(records, heading):
"""
Extract only the answer records and return them as a neatly
formatted string beneath the given heading.
"""
answers, authority, additional = records
lines = ['# ' + heading]
for a in answers:
line = [
a.name,
dns.QUERY_CLASSES.get(a.cls, 'UNKNOWN (%d)' % (a.cls,)),
a.payload]
lines.append(' '.join(str(word) for word in line))
return '\n'.join(line for line in lines)
def printResults(results, domainname):
"""
Print the formatted results for each DNS record type.
"""
sys.stdout.write('# Domain Summary for %r\n' % (domainname,))
sys.stdout.write('\n\n'.join(results) + '\n')
def printError(failure, domainname):
"""
Print a friendly error message if the hostname could not be
resolved.
"""
failure.trap(defer.FirstError)
failure = failure.value.subFailure
failure.trap(error.DNSNameError)
sys.stderr.write('ERROR: domain name not found %r\n' % (domainname,))
def main(reactor, *argv):
options = Options()
try:
options.parseOptions(argv)
except usage.UsageError as errortext:
sys.stderr.write(str(options) + '\n')
sys.stderr.write('ERROR: %s\n' % (errortext,))
raise SystemExit(1)
domainname = options['domainname']
r = client.Resolver('/etc/resolv.conf')
d = defer.gatherResults([
r.lookupAddress(domainname).addCallback(
formatRecords, 'Addresses'),
r.lookupMailExchange(domainname).addCallback(
formatRecords, 'Mail Exchangers'),
r.lookupNameservers(domainname).addCallback(
formatRecords, 'Nameservers'),
], consumeErrors=True)
d.addCallback(printResults, domainname)
d.addErrback(printError, domainname)
return d
if __name__ == '__main__':
react(main, sys.argv[1:])