作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 consul在我的环境中发现服务。 Consul 的 DNS 服务运行在非标准 DNS 端口上。我目前的解决方案更多是变通,我想找到更 pythonic 的方式来做到这一点:
digcmd='dig @127.0.0.1 -p 8600 chef.service.consul +short' # lookup the local chef server via consul
proc=subprocess.Popen(shlex.split(digcmd),stdout=subprocess.PIPE)
out, err=proc.communicate()
chef_server = "https://"+out.strip('\n')
最佳答案
您可以使用 dnspython使用 python 进行查询的库。
from dns import resolver
consul_resolver = resolver.Resolver()
consul_resolver.port = 8600
consul_resolver.nameservers = ["127.0.0.1"]
answer = consul_resolver.query("chef.service.consul", 'A')
for answer_ip in answer:
print(answer_ip)
使用像 dnspython 这样的库比在子进程中调用 dig 更健壮,因为创建进程会影响内存和性能。
关于python - 如何在 python 的 consul 中查找 dns 服务记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24962245/
我是一名优秀的程序员,十分优秀!