mirror of
https://github.com/samba-team/samba.git
synced 2025-07-14 12:59:07 +03:00
s4-devel: developer script for adding DNS entries via netlogon RPC
this calls the netlogon DsrUpdateReadOnlyServerDnsRecords call to add DNS entries for a RODC via RPC calls. The call is routed via a IRPC call to winbind, as winbind is the one with the schannel credential chaining setup. Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
43
source4/scripting/devel/rodcdns
Executable file
43
source4/scripting/devel/rodcdns
Executable file
@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# script to call a netlogon RODC DNS update
|
||||
|
||||
import sys
|
||||
from optparse import OptionParser
|
||||
|
||||
sys.path.insert(0, "bin/python")
|
||||
|
||||
import samba
|
||||
import samba.getopt as options
|
||||
from samba.dcerpc import netlogon, winbind
|
||||
|
||||
########### main code ###########
|
||||
if __name__ == "__main__":
|
||||
parser = OptionParser("rodcdns [options]")
|
||||
sambaopts = options.SambaOptions(parser)
|
||||
|
||||
parser.add_option("", "--weight", dest="weight", help="record weight", default=0, type='int')
|
||||
parser.add_option("", "--priority", dest="priority", help="record priority", default=100, type='int')
|
||||
parser.add_option("", "--port", dest="port", help="port number", default=389, type='int')
|
||||
parser.add_option("", "--type", dest="type", help="record type", default=netlogon.NlDnsLdapAtSite, type='int')
|
||||
parser.add_option("", "--site", dest="site", help="site name", default="Default-First-Site-Name")
|
||||
|
||||
(opts, args) = parser.parse_args()
|
||||
|
||||
lp = sambaopts.get_loadparm()
|
||||
|
||||
w = winbind.winbind("irpc:winbind_server", lp)
|
||||
|
||||
dns_names = netlogon.NL_DNS_NAME_INFO_ARRAY()
|
||||
dns_names.count = 1
|
||||
name = netlogon.NL_DNS_NAME_INFO()
|
||||
name.type = opts.type
|
||||
name.priority = opts.priority
|
||||
name.weight = opts.weight
|
||||
name.port = opts.port
|
||||
name.dns_register = True
|
||||
dns_names.names = [ name ]
|
||||
site_name = opts.site.decode('utf-8')
|
||||
|
||||
ret_names = w.DsrUpdateReadOnlyServerDnsRecords(site_name, 600, dns_names)
|
||||
print("Status: %u" % ret_names.names[0].status)
|
Reference in New Issue
Block a user