15 """Makes DNS queries for A records to specified servers"""
21 import twisted.internet.reactor
as reactor
22 import twisted.internet.task
as task
23 import twisted.names.client
as client
27 argp = argparse.ArgumentParser(description=
'Make DNS queries for A records')
28 argp.add_argument(
'-s',
32 help=
'Host for DNS server to listen on for TCP and UDP.')
33 argp.add_argument(
'-p',
37 help=
'Port that the DNS server is listening on.')
38 argp.add_argument(
'-n',
42 help=(
'Name of the record to query for. '))
43 argp.add_argument(
'-t',
47 help=(
'Force process exit after this number of seconds.'))
48 args = argp.parse_args()
50 def OnResolverResultAvailable(result):
51 answers, authority, additional = result
55 def BeginQuery(reactor, qname):
56 servers = [(args.server_host, args.server_port)]
57 resolver = client.Resolver(servers=servers)
58 deferred_result = resolver.lookupAddress(args.qname)
59 deferred_result.addCallback(OnResolverResultAvailable)
60 return deferred_result
62 task.react(BeginQuery, [args.qname])
65 if __name__ ==
'__main__':