1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-03 04:22:09 +03:00

samba-tool: report total error count and suggest --fix if needed

This commit is contained in:
Andrew Tridgell
2011-06-17 11:34:19 +10:00
parent 08dc1aa4cc
commit a8269792aa

View File

@ -100,8 +100,9 @@ def check_object(self, dn):
res = self.samdb.search(base=dn, scope=ldb.SCOPE_BASE, controls=["extended_dn:1:1"], attrs=['*', 'ntSecurityDescriptor']) res = self.samdb.search(base=dn, scope=ldb.SCOPE_BASE, controls=["extended_dn:1:1"], attrs=['*', 'ntSecurityDescriptor'])
if len(res) != 1: if len(res) != 1:
print("Object %s disappeared during check" % dn) print("Object %s disappeared during check" % dn)
return return 1
obj = res[0] obj = res[0]
error_count = 0
for attrname in obj: for attrname in obj:
if attrname == 'dn': if attrname == 'dn':
continue continue
@ -110,6 +111,7 @@ def check_object(self, dn):
for val in obj[attrname]: for val in obj[attrname]:
if val == '': if val == '':
empty_attribute(self, dn, attrname) empty_attribute(self, dn, attrname)
error_count += 1
continue continue
# check for incorrectly normalised attributes # check for incorrectly normalised attributes
@ -117,7 +119,9 @@ def check_object(self, dn):
normalised = self.samdb.dsdb_normalise_attributes(self.samdb, attrname, [val]) normalised = self.samdb.dsdb_normalise_attributes(self.samdb, attrname, [val])
if len(normalised) != 1 or normalised[0] != val: if len(normalised) != 1 or normalised[0] != val:
normalise_mismatch(self, dn, attrname, obj[attrname]) normalise_mismatch(self, dn, attrname, obj[attrname])
error_count += 1
break break
return error_count
class cmd_dbcheck(Command): class cmd_dbcheck(Command):
@ -168,6 +172,9 @@ class cmd_dbcheck(Command):
res = self.samdb.search(base=DN, scope=self.search_scope, attrs=['dn'], controls=controls) res = self.samdb.search(base=DN, scope=self.search_scope, attrs=['dn'], controls=controls)
print('Checking %u objects' % len(res)) print('Checking %u objects' % len(res))
error_count = 0
for object in res: for object in res:
check_object(self, object.dn) error_count += check_object(self, object.dn)
print('Checked %u objects' % len(res)) if error_count != 0 and not self.fix:
print("Please use --fix to fix these errors")
print('Checked %u objects (%u errors)' % (len(res), error_count))