我认为自己是python(和一般来说编程!)的初学者,但是我正在通过Zed A Shaw的“以艰难的方式学习python”的工作,并且正在慢慢地整理东西。
我正在编写一个小脚本,以检查域的实时mx记录是否符合预期且尚未更改(长话),到目前为止,我具有以下内容:

import dns.resolver
domain = 'bbc.co.uk'
for x in dns.resolver.query(domain,'MX',):
    print x.to_text()


这使用dnspython模块吐出邮件主机和首选项编号。我现在需要做的是将此输出与两个预期结果进行比较,因此对于bbc.co.uk,这些将是cluster1a.eu.messagelabs.com。 &cluster1.eu.messagelabs.com。 (它们的顺序根据当前的偏好号而改变)

我认为最好的方法是将预期结果添加到数组/列表中,并让脚本尝试将输出结果与数组/列表进行比较,并提供对或错的陈述,但经过一整天的尝试后,到目前为止,事实证明这超出了我的理解。

最终,如果结果错误,我想提醒自己或我的同事,但是这可以等到以后,因为我还没有确定实现此方法的最佳方法。
有什么好心的人可以概述一下最佳实践将如何实现我期望的结果吗?

感谢您抽出宝贵时间阅读本文:)

谢谢克里斯

编辑:这似乎完全符合我的期望,谢谢大家的帮助!

import dns.resolver
domain = 'bbc.co.uk'
expected_responses = ['cluster1.eu.messagelabs.com.', 'cluster1a.eu.messagelabs.com.']
for x in dns.resolver.query(domain, 'MX'):
        if x.to_text().split()[1] not in expected_responses:
                print "Unexpected MX record found!"
        else:
                print x.to_text().split()[1] + " OK!"

最佳答案

结果以“ XX dns_entry”格式返回,因此您可以执行以下操作:

import dns.resolver
domain = 'bbc.co.uk'
results = []
for x in dns.resolver.query(domain,'MX',):
    results.append(x.to_text().split(' ')[1])
print results

>>> ['cluster1.eu.messagelabs.com.', 'cluster1a.eu.messagelabs.com.']


现在,您可以与此列表进行比较。

07-26 06:22