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__':