#!/usr/bin/python3 # Example demonstrating how to use the configuration/commandline system # for object setup. # This parses the given config file in 'ISC' style where the sections # represent object instances and shows how to iterate over the sections. # Pass it the sample apt-ftparchive configuration, # doc/examples/ftp-archive.conf # or a bind8 config file.. import apt_pkg import sys ConfigFile = apt_pkg.parse_commandline(apt_pkg.config, [], sys.argv) if len(ConfigFile) != 1: print("Must have exactly 1 file name") sys.exit(0) Cnf = apt_pkg.Configuration() apt_pkg.read_config_file_isc(Cnf, ConfigFile[0]) # Print the configuration space # print "The Configuration space looks like:" # for item in Cnf.keys(): # print "%s \"%s\";" % (item, Cnf[item]) # bind8 config file.. if "Zone" in Cnf: print("Zones: ", Cnf.sub_tree("zone").list()) for item in Cnf.list("zone"): SubCnf = Cnf.sub_tree(item) if SubCnf.find("type") == "slave": print( "Masters for %s: %s" % (SubCnf.my_tag(), SubCnf.value_list("masters")) ) else: print("Tree definitions:") for item in Cnf.list("tree"): SubCnf = Cnf.sub_tree(item) # This could use Find which would eliminate the possibility of # exceptions. print( "Subtree %s with sections '%s' and architectures '%s'" % (SubCnf.my_tag(), SubCnf["Sections"], SubCnf["Architectures"]) )