From: Douglas Bagnall Date: Fri, 9 Sep 2022 04:13:12 +0000 (+1200) Subject: samba-tool: no stack trace on missing ldb tdb X-Git-Tag: talloc-2.4.0~966 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed72ec763133b3ed17a9f75bf4ae0bf0782c2967;p=thirdparty%2Fsamba.git samba-tool: no stack trace on missing ldb tdb Now, in a testenv, if you forget to use '-s st/ad_dc/etc/smb.conf', you only see this: $ bin/samba-tool user rename dsadsa ldb: Unable to open tdb '$HERE/st/client/private/secrets.ldb': No such file or directory ldb: Failed to connect to '$HERE/st/client/private/secrets.ldb' with backend 'tdb': Unable to open tdb '$HERE/st/client/private/secrets.ldb': No such file or directory Could not find machine account in secrets database: Failed to fetch machine account password from secrets.ldb: Could not open secrets.ldb and failed to open $HERE/st/client/private/secrets.tdb: NT_STATUS_CANT_ACCESS_DOMAIN_INFO ltdb: tdb($HERE/st/client/private/sam.ldb): tdb_open_ex: could not open file $HERE/st/client/private/sam.ldb: No such file or directory Unable to open tdb '$HERE/st/client/private/sam.ldb': No such file or directory Failed to connect to 'tdb://$HERE/st/client/private/sam.ldb' with backend 'tdb': Unable to open tdb '$HERE/st/client/private/sam.ldb': No such file or directory ERROR(ldb): uncaught exception - Unable to open tdb '$HERE/st/client/private/sam.ldb': No such file or directory rather than all that AND a stack trace. Signed-off-by: Douglas Bagnall Reviewed-by: Andrew Bartlett --- diff --git a/python/samba/netcmd/__init__.py b/python/samba/netcmd/__init__.py index 31bce8fc1ab..e69da388f36 100644 --- a/python/samba/netcmd/__init__.py +++ b/python/samba/netcmd/__init__.py @@ -139,8 +139,12 @@ class Command(object): elif ldb_emsg == 'LDAP client internal error: NT_STATUS_NETWORK_UNREACHABLE': print("Could not reach remote server", file=self.errf) force_traceback = False + elif ldb_emsg.startswith("Unable to open tdb "): + self._print_error(message, ldb_emsg, 'ldb') + force_traceback = False else: self._print_error(message, ldb_emsg, 'ldb') + elif isinstance(inner_exception, AssertionError): self._print_error(message, klass='assert') force_traceback = True