1. djbdns/tinydns/record
Contents
djbdns (D. J. Bernstein作) tinydns-data プログラム の データ形式
DNS 情報は行の並びからなる。行末の空白とタブは無視される。
- 各行は特殊文字で始めて、コロンで区切られたフィールドが続く。
フィールドは省略できる場合もあるが、コロンは行末のものを除き省略できない。
項目には末尾に ttl:timestamp:location を付けられる。
A レコードは ".", "&", "=", "+", "@" などで生成される。
- 同じ A レコードが重複して生成されることがないように注意すること。
項目 生成されるレコード 説明 . fqdn:ip:x: SOA, NS, A レコード fqdnドメインのネームサーバ、ゾーン宣言 & fqdn:ip:x: NS, A レコード (下位)ドメインfqdnのためのネームサーバ @ fqdn:ip:x:dist: MX と A レコード fqdnのメイル中継受信ホスト = fqdn:ip: A, PTR レコード ホストfqdnはIPアドレスipである + fqdn:ip: A レコード(だけ) サービス名fqdnはIPアドレスipを持つ ' fqdn:s: TXTレコード ^ fqdn:p: PTRレコード : fqdn:n:rdata: 一般レコード(タイプn) # comment --- コメント行。 この行は無視される。 C fqdn:p: CNAME レコード fqdnの正規名を値とする Z fqdn:mname:rname:...ser:ref:ret:exp:min: SOA レコード
tinydns-data用のファイルを読み込んで、type別に分けて出力python scriptを作ってみた。 -- ToshinoriMaeno 2015-12-09 05:49:48
# a = dict() def makedict(c): a[c] = dict() if __name__ == "__main__": import fileinput for c in ".&@=+'^:#CZ-%" : makedict(c) for line in fileinput.input(): rr = line[0] if (rr=="#") : continue attr = line[1:-1].split(":") print rr, attr if len(attr)>1: a[rr][attr[0]] = attr[1:] print '-------' for x in a.items(): if len(x[1]): print '===', x[0], '===' for y in x[1:]: for z in sorted(y.keys()): print z, y[z]