Python dns 解析器在同一行中打印域的所有结果

标签 python multithreading dns

我是Python新手。我正在尝试在程序中使用 dns.resolver 模块,在其中传递域列表并使用线程池运行它们,该线程池异步读取文件的内容,然后从文件中打印每个域的结果。

下面是代码:

import dns.resolver
from multiprocessing.pool import ThreadPool as Pool
pool_size =4
pool = Pool(pool_size)
dnsResolver = dns.resolver.Resolver()
dnsResolver.timeout = 1
dnsResolver.lifetime = 1
dnsResolver.nameservers = ['172.31.0.2']

#domain_list = ['google.com','facebook.com', 'amazon.com']
#for domain in domain_list:
# Query results for the dig operations from a file that contains less than 1024 domains in it 

def fetch_dig_no_blast_results(no_blast_domains):
 try:
  no_blast_domains = no_blast_domains.strip()
  dnsAnswer = dnsResolver.query(no_blast_domains)
  for rdata in dnsAnswer:
   print (no_blast_domains, "resolved to",str(rdata))
 except dns.resolver.NXDOMAIN:
  print ("No records exists for", no_blast_domains)
 except dns.resolver.Timeout:
  print ("Timeout in querying",no_blast_domains)

with open("no-blast-domains.txt",'r') as fd1:
 for no_blast_domains in fd1:
  pool.apply_async(fetch_dig_no_blast_results, (no_blast_domains,))

pool.close()
pool.join()

我有两个问题。

  1. 我需要在同一行中打印特定域的 dns 查询的所有结果。例如,域名“amazon.com”的 DNS 查询给出三个 IP。我需要在同一行中打印这三个 ip -

我正在查看的输出示例如下:

['amazon.com' resolved to 'ip1', 'ip2', 'ip3']

当前代码将它们打印为三行

['amazon.com' resolved to 'ip1']

['amazon.com' resolved to 'ip2']

['amazon.com' resolved to 'ip3']
  • 我想确保每个线程查询不同的域,并且没有线程查询相同的域。
  • 任何建议都会对我有很大帮助。

    最佳答案

    在示例中替换这两行代码:

    for rdata in dnsAnswer:
       print (no_blast_domains, "resolved to",str(rdata))
    

    与(如果列表中有整数/数字):

    print(no_blast_domains, "resolved to", ",".join(str(x) for x in rdata))
    

    with(如果有,则列表中只有字符串):

    print(no_blast_domains, "resolved to", ",".join(rdata))
    

    关于Python dns 解析器在同一行中打印域的所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47986934/

    相关文章:

    dns - 我可以配置子域以指向我的服务器上的特定端口吗

    python - 解析深度嵌套的 Python 字典/元组

    python - Django:如何在佛罗里达设置中设置 EDT 时区

    java - 一个新的还没有启动的线程对象会被垃圾回收吗?

    java - 为线程类设置超时

    ssl - 是否有等同于 ALIAS/ANAME 的东西?

    python - 如何在 macOS 或 OS X 上安装 pip?

    python - 多元斯 PIL 曼等级相关的现成实现

    c - 使用 pthread_kill() 有危险吗?

    linux - 我的 cloudflare 设置已全部配置但无法正常工作