【发布时间】:2021-02-15 21:07:55
【问题描述】:
我有一些功能代码正在做我想做的事。它接受 DNS 响应,将响应分解为所有部分(即主机名、所有可选子域名、域名和 tld),然后从整个 DNS 响应中去除主机名和尾随点并显示整个域(带有可选的子域)
请注意,“FQDN”的变量将是动态 DNS 响应和/或用户输入。
无论 hte 变量上是否有尾随点(即“hostname.domain.com”和“hostname.domain.com”的函数),我如何设置代码以使其正常运行?
我也很好奇是否有人对如何在产生相同输出的同时整体改进此代码有任何建议。提前致谢!
fqdn = "computername.subdomainname1.subdomainname2.domainname.com."
dot, tld, domain, *sub_domains, hostname = fqdn.split(".")[::-1]
testname = fqdn.split(hostname + ".")
before = len("")
after = len(".")
parsed_testname = (testname[1][before:-after])
print(hostname)
print(parsed_testname)
输出是:
computername
subdomainname1.subdomainname2.domainname.com
【问题讨论】:
-
几个问题:1)您需要跟踪
tld、domain、sub_domains等,还是只是额外的? 2) 如果有的话,你的输出是否应该保留结尾的.? -
您是否希望
before = len("") ; after = len(".")永远成为0和1以外的任何其他? -
如果您需要“规范化”名称,请注意除了尾随点之外您还有很多其他事情要做。例如,大小写是一种(主机名不区分大小写,您可以得到混合大小写的回复),如果用户输入受到限制,您可能会收到非 ASCII 字符,对于主机名,您需要在它们上应用 IDNA 以返回 ASCII。 PS:需要使用假名时请使用
example.com或.exampleTLD。 -
@Chance - 我确实需要单独跟踪子域(如果存在)和域......但是,tld 可以(或不)与域变量组合。 (例如......它可以是“domain.com”或“domain”和“com”。
-
@DeepSpace - 这段代码实际上只是让脚本执行我想要的操作。它的唯一目的是去掉尾随的“。”
标签: python python-3.x string dns python-3.7