diff options
Diffstat (limited to 'bin/get_catalog')
| -rwxr-xr-x | bin/get_catalog | 21 |
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 |
