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
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
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)
# 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(