summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/scripting/python/samba/provision/sambadns.py16
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(