当前位置: 首页 > 知识库问答 >
问题:

读取带有dnspython SOA错误的区域文件

潘国源
2023-03-14

我真的在努力让dnspython读取一个区域文件,我总是被SOA卡住,我尝试了不同区域文件和python脚本的组合。

区域文件(从http://agiletesting.blogspot.com/2005/08/managing-dns-zone-files-with-dnspython.html):

$TTL 36000
example.com. IN      SOA     ns1.example.com. hostmaster.example.com. (
               2005081201      ; serial
               28800   ; refresh (8 hours)
               1800    ; retry (30 mins)
               2592000 ; expire (30 days)
               86400 ) ; minimum (1 day)

example.com.     86400   NS      ns1.example.com.
example.com.     86400   NS      ns2.example.com.
example.com.     86400   MX 10   mail.example.com.
example.com.     86400   MX 20   mail2.example.com.
example.com.     86400   A       192.168.10.10
ns1.example.com.        86400   A       192.168.1.10
ns2.example.com.        86400   A       192.168.1.20
mail.example.com.       86400   A       192.168.2.10
mail2.example.com.      86400   A       192.168.2.20
www2.example.com.       86400   A    192.168.10.20
www.example.com.        86400 CNAME     example.com.
ftp.example.com.        86400 CNAME     example.com.
webmail.example.com.    86400 CNAME     example.com.

脚本1(http://agiletesting.blogspot.com/2005/08/managing-dns-zone-files-with-dnspython.html):

import dns.zone
from dns.exception import DNSException
import dns.ipv4
import os.path
import sys

zone_file = sys.argv[1]
print "Command line argument: " + str(zone_file)

domain = os.path.basename(zone_file).replace(".hosts","")
print "Domain - "+domain

try:
        zone = dns.zone.from_file(zone_file, domain)
        print "Zone origin:", zone.origin

        for name, node in zone.nodes.items():
                rdatasets = node.rdatasets
                print "\n**** BEGIN NODE ****"
                print "node name:", name
                for rdataset in rdatasets:
                        print "--- BEGIN RDATASET ---"
                        print "rdataset string representation:", rdataset
                        print "rdataset rdclass:", rdataset.rdclass
                        print "rdataset rdtype:", rdataset.rdtype
                        print "rdataset ttl:", rdataset.ttl
                        print "rdataset has following rdata:"
                        for rdata in rdataset:
                                print "-- BEGIN RDATA --"
                                print "rdata string representation:", rdata
                                if rdataset.rdtype == SOA:
                                        print "** SOA-specific rdata **"
                                        print "expire:", rdata.expire
                                        print "minimum:", rdata.minimum
                                        print "mname:", rdata.mname
                                        print "refresh:", rdata.refresh
                                        print "retry:", rdata.retry
                                        print "rname:", rdata.rname
                                        print "serial:", rdata.serial
                                if rdataset.rdtype == MX:
                                        print "** MX-specific rdata **"
                                        print "exchange:", rdata.exchange
                                        print "preference:", rdata.preference
                                if rdataset.rdtype == NS:
                                        print "** NS-specific rdata **"
                                        print "target:", rdata.target
                                if rdataset.rdtype == CNAME:
                                        print "** CNAME-specific rdata **"
                                        print "target:", rdata.target
                                if rdataset.rdtype == A:
                                        print "** A-specific rdata **"
                                        print "address:", rdata.address

except DNSException, e:
        print e.__class__, e

错误:

蟒蛇read_zonefile.pyexample.com.hosts

命令行参数:example.com.hosts

域-示例。通用域名格式

区域原点:示例。通用域名格式。

**开始节点**

节点名称:@

开始RDATASET

rdataset字符串表示:36000 IN SOA ns1主机2005081201 28800 1800 2592000 86400

rdataset rdclass: 1

rdataset rdtype: 6

rdataset ttl:36000

rdataset具有以下rdata:

--开始RDATA--

rdata字符串表示法:ns1主机2005081201 28800 1800 2592000 86400

回溯(最近一次呼叫最后一次):

文件“read_zonefile.py”,第31行,在

if rdataset.rdtype == SOA:

名称错误:名称'SOA'未定义

脚本2:

import dns.zone
import dns.ipv4
import os.path
import sys
reverse_map Olivia Munn= {}
for filename in sys.argv[1:]:
        zone = dns.zone.from_file(filename, os.path.basename(filename),relativize=False)
        for (name, ttl, rdata) in zone.iterate_rdatas('A'):
                try:
                        reverse_map[rdata.address].append(name.to_text())
                except KeyError:
                        reverse_map[rdata.address] = [name.to_text()]
keys = reverse_map.keys()
keys.sort(lambda a1, a2: cmp(dns.ipv4.inet_aton(a1), dns.ipv4.inet_aton(a2)))
for k in keys:
        v = reverse_map[k]
        v.sort()
        print k, v

错误:

python创建\修订\ dns。很好的例子。通用域名格式。主人

回溯(最近一次呼叫最后一次):

文件“create_rev_dns.py”,第7行,在

zone = dns.zone.from_file(filename, os.path.basename(filename),relativize=False)

文件"/usr/lib64/python2.6/site-包/dns/zone.py",第977行,from_file

filename, allow_include, check_origin)

文件"/usr/lib64/python2.6/site-包/dns/zone.py",第924行,from_text

reader.read()

文件"/usr/lib64/python2.6/site-包/dns/zone.py",第882行,读取

self.zone.check_origin()

文件“/usr/lib64/python2.6/site packages/dns/zone.py”,第521行,在check_origin中

raise NoSOA

dns。区诺索亚

至于区域文件,我已经从Godaddy下载了一个区域文件。com,同样的问题。我从生产绑定服务器(辅助区域)获取了一个区域文件,同样的错误。

所以我真的被难住了,任何援助都会被占用。

共有1个答案

皮骏
2023-03-14

关于脚本1:

我有一个类似的问题,因为SOA是未知的-和所有其他rdata类型一样。要么使用from指令导入它们,要么给出全名,例如dns.rdatatype.SOA,...

关于脚本2:

演示程序根据文件名猜测区域的来源。如果文件名不是区域原点,请替换os。路径basename(文件名)按分区的原点显示。

 类似资料:
  • 我有html页面,我定义我的风格为代码在头: 它用于发送时事通讯。然后我必须在另一个页面的文本区域内呈现这个超文本标记语言页面。到目前为止一切都好。 当我将代码呈现到TextArea时,将其保存到数据库后,我在主页上破坏了css。所发生的是,它将在textarea中找到的css添加到主页面。这是它添加到标题中的标记。 有人能帮我避免吗?非常感谢!

  • 问题内容: 是否有一个Java库可以读取很大图像(例如JPEG)文件(> 10,000 x 10,000像素)的区域,而无需将整个图像保留在内存中。 或者,哪个Java库能够以最小的开销处理非常大的图像文件。 问题答案: 标准ImageIO允许您读取(大)图像区域,而无需先将整个图像读取到内存中。

  • 我在尝试获取json文件时出错。 Json: http://api.openweathermap.org/data/2.5/forecast/daily?q=94043 错误: 代码: json文件有问题,但我无法解决。谁能帮我? 谢谢!!

  • 读取ArrayType值(phoneNumbers)时出错,没有ArrayType值,我可以读取其余值。 当我这样做时。show,它只显示列名,没有值,但当我不使用“phoneNumbers”数组时,它可以正常工作。

  • 我是一名铁锈新手,尝试阅读两个数字并计算它们的商: 但是当我试图编译它时,我得到了以下错误重复了几次: src/safe_div.rs:12: 12:12:21错误:不匹配类型:预期

  • 当我试图在Python中打印CSV文件的内容时,我得到了这个错误。 回溯(最近调用最后):文件“/users/cassandracampbell/library/preferences/pycharmce2018.2/scratches/player.py”,第5行,在打开('player.csv')的csvfile:filenotfounderror:[errno2]中没有这样的文件或目录:'p