diff options
-rw-r--r-- | source4/scripting/python/samba/provision/sambadns.py | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/source4/scripting/python/samba/provision/sambadns.py b/source4/scripting/python/samba/provision/sambadns.py index 740dd38417..21675113d6 100644 --- a/source4/scripting/python/samba/provision/sambadns.py +++ b/source4/scripting/python/samba/provision/sambadns.py @@ -27,6 +27,7 @@ import time import ldb from base64 import b64encode import samba +import subprocess from samba.ndr import ndr_pack, ndr_unpack from samba import setup_file from samba.dcerpc import dnsp, misc, security @@ -738,7 +739,7 @@ def create_zone_file(lp, logger, paths, targetdir, dnsdomain, os.system(rndc + " unfreeze " + lp.get("realm")) -def tdb_copy(logger, file1, file2): +def tdb_copy(file1, file2): """Copy tdb file using tdbbackup utility and rename it """ # Find the location of tdbbackup tool @@ -747,9 +748,12 @@ def tdb_copy(logger, file1, file2): toolpath = os.path.join(d, "tdbbackup") if os.path.exists(toolpath): break - status = os.system("%s -s '.dns' %s" % (toolpath, file1)) + + tdbbackup_cmd = [toolpath, "-s", ".copy.tdb", file1] + status = subprocess.call(tdbbackup_cmd, close_fds=True, shell=False) + if status == 0: - os.rename("%s.dns" % file1, file2) + os.rename("%s.copy.tdb" % file1, file2) else: raise Exception("Error copying %s" % file1) @@ -816,13 +820,11 @@ def create_samdb_copy(samdb, logger, paths, names, domainsid, domainguid): # Copy root, config, schema partitions (and any other if any) # Since samdb is open in the current process, copy them in a child process try: - tdb_copy(logger, - os.path.join(private_dir, "sam.ldb"), + tdb_copy(os.path.join(private_dir, "sam.ldb"), os.path.join(dns_dir, "sam.ldb")) for nc in partfile: pfile = partfile[nc] - tdb_copy(logger, - os.path.join(private_dir, pfile), + tdb_copy(os.path.join(private_dir, pfile), os.path.join(dns_dir, pfile)) except: logger.error( |