aboutsummaryrefslogtreecommitdiffstats
path: root/bin/get_catalog
diff options
context:
space:
mode:
authorLexi Winter <lexi@le-fay.org>2025-07-12 12:44:52 +0100
committerLexi Winter <lexi@le-fay.org>2025-07-12 12:44:52 +0100
commit26730cf8a9bda042ee8ce32790948da1da6fde03 (patch)
tree986b211e18ee1d4bd5443ef15a16c7a2304928ea /bin/get_catalog
parent801796549782295f49217badfbd7d4ac222cb37a (diff)
downloaddns-26730cf8a9bda042ee8ce32790948da1da6fde03.tar.gz
dns-26730cf8a9bda042ee8ce32790948da1da6fde03.tar.bz2
bin/get_catalog: clean up a bit
Diffstat (limited to 'bin/get_catalog')
-rwxr-xr-xbin/get_catalog21
1 files changed, 13 insertions, 8 deletions
diff --git a/bin/get_catalog b/bin/get_catalog
index 772d5b4..d1e7aa5 100755
--- a/bin/get_catalog
+++ b/bin/get_catalog
@@ -23,19 +23,24 @@ def axfr(zone, hostname):
return dns.zone.from_xfr(dns.query.xfr(addr, zone))
except Exception as e:
last_exc = e
- raise (Exception(str(last_exc)))
+ raise (last_exc)
def print_catalog(zone):
- for name, node in zone.nodes.items():
- for rdata in node.rdatasets:
- if rdata.rdtype == dns.rdatatype.PTR:
- for ptr in rdata:
- print(str(ptr.target).rstrip('.'))
+ nodes = [node
+ for (name, node) in zone.nodes.items()
+ if len(name) == 2 and name[1] == b"zones"]
+ ptrs = [str(ptr.target).rstrip('.')
+ for node in nodes
+ for rdataset in node.rdatasets
+ if rdataset.rdtype == dns.rdatatype.PTR
+ for ptr in rdataset]
+
+ print("\n".join(ptrs))
def main():
if len(sys.argv) != 3:
- print(f"Usage: {sys.argv[0]} <zone> <server>")
+ print(f"Usage: {sys.argv[0]} <zone> <server>", file=sys.stderr)
return 1
zone_name = sys.argv[1]
@@ -45,7 +50,7 @@ def main():
zone = axfr(zone_name, server)
print_catalog(zone)
except Exception as e:
- print(f"Zone transfer failed: {e}")
+ print(f"Failed to load catalog: {e}", file=sys.stderr)
return 1
return 0