aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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