| 1 | #!/usr/bin/env python
|
|---|
| 2 |
|
|---|
| 3 | # script to call a netlogon RODC DNS update
|
|---|
| 4 |
|
|---|
| 5 | import sys
|
|---|
| 6 | from optparse import OptionParser
|
|---|
| 7 |
|
|---|
| 8 | sys.path.insert(0, "bin/python")
|
|---|
| 9 |
|
|---|
| 10 | import samba
|
|---|
| 11 | import samba.getopt as options
|
|---|
| 12 | from samba.dcerpc import netlogon, winbind
|
|---|
| 13 |
|
|---|
| 14 | ########### main code ###########
|
|---|
| 15 | if __name__ == "__main__":
|
|---|
| 16 | parser = OptionParser("rodcdns [options]")
|
|---|
| 17 | sambaopts = options.SambaOptions(parser)
|
|---|
| 18 |
|
|---|
| 19 | parser.add_option("", "--weight", dest="weight", help="record weight", default=0, type='int')
|
|---|
| 20 | parser.add_option("", "--priority", dest="priority", help="record priority", default=100, type='int')
|
|---|
| 21 | parser.add_option("", "--port", dest="port", help="port number", default=389, type='int')
|
|---|
| 22 | parser.add_option("", "--type", dest="type", help="record type", default=netlogon.NlDnsLdapAtSite, type='int')
|
|---|
| 23 | parser.add_option("", "--site", dest="site", help="site name", default="Default-First-Site-Name")
|
|---|
| 24 |
|
|---|
| 25 | (opts, args) = parser.parse_args()
|
|---|
| 26 |
|
|---|
| 27 | lp = sambaopts.get_loadparm()
|
|---|
| 28 |
|
|---|
| 29 | w = winbind.winbind("irpc:winbind_server", lp)
|
|---|
| 30 |
|
|---|
| 31 | dns_names = netlogon.NL_DNS_NAME_INFO_ARRAY()
|
|---|
| 32 | dns_names.count = 1
|
|---|
| 33 | name = netlogon.NL_DNS_NAME_INFO()
|
|---|
| 34 | name.type = opts.type
|
|---|
| 35 | name.priority = opts.priority
|
|---|
| 36 | name.weight = opts.weight
|
|---|
| 37 | name.port = opts.port
|
|---|
| 38 | name.dns_register = True
|
|---|
| 39 | dns_names.names = [ name ]
|
|---|
| 40 | site_name = opts.site.decode('utf-8')
|
|---|
| 41 |
|
|---|
| 42 | ret_names = w.DsrUpdateReadOnlyServerDnsRecords(site_name, 600, dns_names)
|
|---|
| 43 | print("Status: %u" % ret_names.names[0].status)
|
|---|