bin/pvl.hosts-reverse
author Tero Marttila <tero.marttila@aalto.fi>
Wed, 25 Feb 2015 15:55:23 +0200
changeset 475 a76571e27c6f
parent 458 600ad9eb6f25
child 487 920394061b6f
permissions -rwxr-xr-x
pvl.dns.zone: move script main()'s back out to bin/
458
600ad9eb6f25 pvl.hosts.zone: cleanup and split pvl.hosts-forward and pvl.hosts-reverse from pvl.hosts-dns
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     1
#!/usr/bin/env python
600ad9eb6f25 pvl.hosts.zone: cleanup and split pvl.hosts-forward and pvl.hosts-reverse from pvl.hosts-dns
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     2
475
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
     3
import logging; log = logging.getLogger('pvl.hosts-reverse')
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
     4
import optparse 
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
     5
import pvl.args
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
     6
import pvl.hosts
458
600ad9eb6f25 pvl.hosts.zone: cleanup and split pvl.hosts-forward and pvl.hosts-reverse from pvl.hosts-dns
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     7
import pvl.hosts.zone
600ad9eb6f25 pvl.hosts.zone: cleanup and split pvl.hosts-forward and pvl.hosts-reverse from pvl.hosts-dns
Tero Marttila <tero.marttila@aalto.fi>
parents:
diff changeset
     8
475
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
     9
def main (argv):
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    10
    """
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    11
        Generate bind zonefiles from host definitions.
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    12
    """
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    13
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    14
    parser = optparse.OptionParser(main.__doc__)
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    15
    parser.add_option_group(pvl.args.parser(parser))
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    16
    parser.add_option_group(pvl.hosts.config.optparser(parser))
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    17
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    18
    parser.add_option('--reverse-zone',         metavar='PREFIX',
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    19
            help="Generate reverse zone for prefix")
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    20
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    21
    parser.add_option('--unknown-host',         metavar='NAME',
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    22
            help="Generate records for unused IPs")
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    23
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    24
    # input
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    25
    options, args = pvl.args.parse(parser, argv)
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    26
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    27
    if not options.reverse_zone:
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    28
        log.fatal("required --reverse-zone")
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    29
        return 1
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    30
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    31
    hosts = pvl.hosts.apply(options, args)
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    32
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    33
    # process
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    34
    prefix = pvl.dns.parse_prefix(options.reverse_zone)
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    35
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    36
    for rr in pvl.hosts.zone.apply_hosts_reverse(options, hosts, prefix):
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    37
        print unicode(rr)
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    38
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    39
    return 0
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    40
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    41
if __name__ == '__main__':
a76571e27c6f pvl.dns.zone: move script main()'s back out to bin/
Tero Marttila <tero.marttila@aalto.fi>
parents: 458
diff changeset
    42
    pvl.args.main(main)