]> Frank Brehm's Git Trees - pixelpark/pp-admin-tools.git/commitdiff
Make the linter happy
authorFrank Brehm <frank.brehm@pixelpark.com>
Tue, 13 Jun 2023 11:49:40 +0000 (13:49 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Tue, 13 Jun 2023 11:49:40 +0000 (13:49 +0200)
lib/pp_admintools/app/remove_ldap_user.py
lib/pp_admintools/app/set_ldap_password.py
locale/de_DE/LC_MESSAGES/pp_admintools.po
locale/en_US/LC_MESSAGES/pp_admintools.po
locale/pp_admintools.pot

index f4962dda14bbbae555c6dfcdef48eac99c170259..28223c03ab639e2b7cca9a2f8f50334133fd1d0c 100644 (file)
@@ -26,7 +26,7 @@ from .ldap import FatalLDAPError, LdapAppError
 from .. import pp
 from ..xlate import XLATOR
 
-__version__ = '0.6.2'
+__version__ = '0.6.3'
 LOG = logging.getLogger(__name__)
 
 _ = XLATOR.gettext
@@ -45,6 +45,7 @@ class RemoveLdapUserApplication(BaseLdapApplication):
     """Application class for disabling or removing a user from LDAP."""
 
     show_simulate_option = True
+    show_quiet_option = False
 
     default_nologin_shell = '/usr/sbin/nologin'
     value_inactive = 'inactive'
@@ -175,7 +176,7 @@ class RemoveLdapUserApplication(BaseLdapApplication):
 
     # -------------------------------------------------------------------------
     def post_init(self):
-        """Execute isome steps before calling run()."""
+        """Execute some steps before calling run()."""
         super(RemoveLdapUserApplication, self).post_init()
 
         given_users = getattr(self.args, 'users', [])
index c6fb280e19c024cde1ccac93b244f08b1c749b44..fc3019981d968304b61319735e33d9b6728621a1 100644 (file)
@@ -1,40 +1,41 @@
 # -*- coding: utf-8 -*-
 """
+@summary: An application module for setting a LDAP password.
+
 @author: Frank Brehm
 @contact: frank.brehm@pixelpark.com
 @copyright: © 2023 by Frank Brehm, Berlin
-@summary: An application module for setting a LDAP password
 """
 from __future__ import absolute_import
 
 # Standard modules
+import getpass
 import logging
 import os
-import getpass
 
 # Third party modules
-# from ldap3 import MODIFY_REPLACE, MODIFY_ADD, MODIFY_DELETE
-from ldap3 import MODIFY_REPLACE
-from ldap3.core.exceptions import LDAPBindError
 
-# Own modules
 # from fb_tools.common import to_bool, is_sequence, pp
 from fb_tools.common import is_sequence
 
-from .. import pp
-
-from ..xlate import XLATOR
+# from ldap3 import MODIFY_REPLACE, MODIFY_ADD, MODIFY_DELETE
+from ldap3 import MODIFY_REPLACE
+from ldap3.core.exceptions import LDAPBindError
 
-from .ldap import LdapAppError, FatalLDAPError
+# Own modules
 from .ldap import BaseLdapApplication
+from .ldap import FatalLDAPError
+from .ldap import LdapAppError
 from .ldap import PasswordFileOptionAction
-
-from ..handler.ldap_password import WrongPwdSchemaError
-from ..handler.ldap_password import LdapPasswordHandler
+from .. import pp
 from ..handler.ldap_password import HAS_CRACKLIB
-from ..handler.ldap_password import WrongSaltError, WrongRoundsError
+from ..handler.ldap_password import LdapPasswordHandler
+from ..handler.ldap_password import WrongPwdSchemaError
+from ..handler.ldap_password import WrongRoundsError
+from ..handler.ldap_password import WrongSaltError
+from ..xlate import XLATOR
 
-__version__ = '0.8.1'
+__version__ = '0.8.2'
 LOG = logging.getLogger(__name__)
 
 _ = XLATOR.gettext
@@ -53,6 +54,7 @@ class SetLdapPasswordApplication(BaseLdapApplication):
     """Application class for setting a LDAP password."""
 
     show_simulate_option = True
+    show_quiet_option = False
 
     use_default_ldap_connection = False
     use_multiple_ldap_connections = False
@@ -67,7 +69,7 @@ class SetLdapPasswordApplication(BaseLdapApplication):
 
     # -------------------------------------------------------------------------
     def __init__(self, appname=None, base_dir=None):
-
+        """Initialize the SetLdapPasswordApplication object."""
         LdapPasswordHandler.init_pass_schemes()
 
         self.current_password = None
@@ -88,8 +90,8 @@ class SetLdapPasswordApplication(BaseLdapApplication):
         my_appname = self.get_generic_appname(appname)
 
         desc = _(
-            "Changing the password of the given user. If no user was given, then "
-            "{app} tries to use the name of the user logged in on the controlling terminal."
+            'Changing the password of the given user. If no user was given, then '
+            '{app} tries to use the name of the user logged in on the controlling terminal.'
         ).format(app=my_appname)
 
         super(SetLdapPasswordApplication, self).__init__(
@@ -100,7 +102,7 @@ class SetLdapPasswordApplication(BaseLdapApplication):
     # -------------------------------------------------------------------------
     def as_dict(self, short=True):
         """
-        Transforms the elements of the object into a dict
+        Transform the elements of the object into a dict.
 
         @param short: don't include local properties in resulting dict.
         @type short: bool
@@ -108,7 +110,6 @@ class SetLdapPasswordApplication(BaseLdapApplication):
         @return: structure as dict
         @rtype:  dict
         """
-
         res = super(SetLdapPasswordApplication, self).as_dict(short=short)
 
         if self.current_password and self.verbose < 5:
@@ -120,43 +121,43 @@ class SetLdapPasswordApplication(BaseLdapApplication):
 
     # -------------------------------------------------------------------------
     def init_arg_parser(self):
-
-        app_group = self.arg_parser.add_argument_group(_("Options for {}").format(
+        """Initialize specific command line parameters for this application."""
+        app_group = self.arg_parser.add_argument_group(_('Options for {}').format(
             self.appname))
 
         pw_group = app_group.add_mutually_exclusive_group()
 
         pw_group.add_argument(
-            '-w', '--password', metavar=_("PASSWORD"), dest="current_pw",
-            help=_("Use {} as the current user password.").format(_("PASSWORD")),
+            '-w', '--password', metavar=_('PASSWORD'), dest='current_pw',
+            help=_('Use {} as the current user password.').format(_('PASSWORD')),
         )
 
         pw_group.add_argument(
-            '-W', '--password-prompt', action="store_true", dest="current_pw_prompt",
+            '-W', '--password-prompt', action='store_true', dest='current_pw_prompt',
             help=_(
-                "Prompt for current user password. This is used instead of "
-                "specifying the password on the command line."),
+                'Prompt for current user password. This is used instead of '
+                'specifying the password on the command line.'),
         )
 
         pw_group.add_argument(
-            '-y', '--password-file', metavar=_('PASSWORD_FILE'), dest="current_pw_file",
+            '-y', '--password-file', metavar=_('PASSWORD_FILE'), dest='current_pw_file',
             must_absolute=False, action=PasswordFileOptionAction,
-            help=_("Use contents of {} as the current user password.").format(_('PASSWORD_FILE')),
+            help=_('Use contents of {} as the current user password.').format(_('PASSWORD_FILE')),
         )
 
         app_group.add_argument(
-            '-n', '--new-password', metavar=_("PASSWORD"), dest="new_pw",
+            '-n', '--new-password', metavar=_('PASSWORD'), dest='new_pw',
             help=_(
-                "Use {} as the new user password. If not given, it will be "
-                "asked for it.").format(_("PASSWORD")),
+                'Use {} as the new user password. If not given, it will be '
+                'asked for it.').format(_('PASSWORD')),
         )
 
         if HAS_CRACKLIB:
             app_group.add_argument(
-                '-N', '--no-cracklib', action="store_true", dest="no_cracklib",
+                '-N', '--no-cracklib', action='store_true', dest='no_cracklib',
                 help=_(
-                    "Do not check the quality of the new password with the "
-                    "{} library.").format('cracklib'),
+                    'Do not check the quality of the new password with the '
+                    '{} library.').format('cracklib'),
             )
 
         schema_list = []
@@ -170,30 +171,30 @@ class SetLdapPasswordApplication(BaseLdapApplication):
         schema_list.append('help')
 
         help_txt1 = _(
-            "The schema (hashing method) to use to hash the new password. It is possible to give "
-            "here the value {val_list!r}, then all possible schemes are shown and exit. "
-            "Default: {default!r}.").format(val_list='list', default=def_schema)
+            'The schema (hashing method) to use to hash the new password. It is possible to give '
+            'here the value {val_list!r}, then all possible schemes are shown and exit. '
+            'Default: {default!r}.').format(val_list='list', default=def_schema)
 
         help_txt2 = _(
-            "If you are not using an admin account, then the password will hashed "
-            "only by the default schema.")
+            'If you are not using an admin account, then the password will hashed '
+            'only by the default schema.')
 
         app_group.add_argument(
-            '-S', '--schema', metavar=_("SCHEMA"), dest="schema", choices=schema_list,
+            '-S', '--schema', metavar=_('SCHEMA'), dest='schema', choices=schema_list,
             help=(help_txt1 + ' ' + help_txt2)
         )
 
         user_help = _(
-            "The user, which password in the given LDAP instance should be changed. "
-            "It may be given by its Uid (the alphanumeric POSIX name), its mail address "
-            "or its LDAP DN.")
+            'The user, which password in the given LDAP instance should be changed. '
+            'It may be given by its Uid (the alphanumeric POSIX name), its mail address '
+            'or its LDAP DN.')
         if self.current_user:
             user_help += ' ' + _(
-                "If not given, then your current user name {!r} will be used.").format(
+                'If not given, then your current user name {!r} will be used.').format(
                 self.current_user)
         user_help += ' ' + _(
-            "If you are using a readonly LDAP instance or an instance w/o admin access, "
-            "then you must provide somehow the current password of the user to change.")
+            'If you are using a readonly LDAP instance or an instance w/o admin access, '
+            'then you must provide somehow the current password of the user to change.')
 
         if self.current_user:
             app_group.add_argument(
@@ -203,31 +204,28 @@ class SetLdapPasswordApplication(BaseLdapApplication):
                 'user', metavar=_('USER'), help=user_help)
 
         app_group.add_argument(
-            '--salt', metavar='SALT', dest="salt",
+            '--salt', metavar='SALT', dest='salt',
             help=_(
-                "A possible salt to use on hashing the password. Caution: "
-                "not all hashing schemes are supporting a salt.")
+                'A possible salt to use on hashing the password. Caution: '
+                'not all hashing schemes are supporting a salt.')
         )
 
         app_group.add_argument(
-            '--rounds', metavar='ROUNDS', dest="rounds", type=int,
+            '--rounds', metavar='ROUNDS', dest='rounds', type=int,
             help=_(
-                "The number of calculation rounds to use on hashing the password. Caution: "
-                "not all hashing schemes are supporting calculation rounds.")
+                'The number of calculation rounds to use on hashing the password. Caution: '
+                'not all hashing schemes are supporting calculation rounds.')
         )
 
         super(SetLdapPasswordApplication, self).init_arg_parser()
 
     # -------------------------------------------------------------------------
     def post_init(self):
-        """
-        Method to execute before calling run().
-        """
-
+        """Execute some steps before calling run()."""
         super(SetLdapPasswordApplication, self).post_init()
 
         if self.verbose > 5:
-            msg = "Given args:\n" + pp(self.args.__dict__)
+            msg = 'Given args:\n' + pp(self.args.__dict__)
             LOG.debug(msg)
 
         self.pwd_handler.verbose = self.verbose
@@ -256,16 +254,16 @@ class SetLdapPasswordApplication(BaseLdapApplication):
             if self.current_user:
                 given_user = self.current_user
                 if self.verbose > 1:
-                    LOG.debug("User bind: no explicit user given.")
+                    LOG.debug('User bind: no explicit user given.')
                 self.do_user_bind = True
                 self.user_uid = given_user
             else:
-                msg = _("Could not detect your current login name.")
+                msg = _('Could not detect your current login name.')
                 LOG.error(msg)
                 self.exit(1)
 
         if given_user == 'root':
-            msg = _("The user {!r} will never be managed by LDAP.").format('root')
+            msg = _('The user {!r} will never be managed by LDAP.').format('root')
             LOG.error(msg)
             self.exit(1)
 
@@ -274,11 +272,11 @@ class SetLdapPasswordApplication(BaseLdapApplication):
             self.do_user_bind = True
         elif self.args.current_pw_prompt:
             if self.verbose > 1:
-                LOG.debug("User bind: Password input demanded.")
+                LOG.debug('User bind: Password input demanded.')
             self.do_user_bind = True
         elif self.args.current_pw_file:
             if self.verbose > 1:
-                LOG.debug("User bind: Password file given.")
+                LOG.debug('User bind: Password file given.')
             self.current_password = self.read_password_file(self.args.current_pw_file)
             self.do_user_bind = True
 
@@ -289,21 +287,21 @@ class SetLdapPasswordApplication(BaseLdapApplication):
         ldap = self.cfg.ldap_connection[inst]
         if not ldap.is_admin or ldap.readonly:
             if self.verbose > 1:
-                LOG.debug("User bind: LDAP instance is readonly or not as admin.")
+                LOG.debug('User bind: LDAP instance is readonly or not as admin.')
             self.do_user_bind = True
 
     # -------------------------------------------------------------------------
     def pre_run(self):
-
+        """Execute some steps before calling the underlaying run()."""
         inst = self.ldap_instances[0]
         connect_info = self.cfg.ldap_connection[inst]
 
-        LOG.debug("Pre running tasks ...")
-        msg = _("Using LDAP instance {inst!r} - {url}.").format(inst=inst, url=connect_info.url)
+        LOG.debug('Pre running tasks ...')
+        msg = _('Using LDAP instance {inst!r} - {url}.').format(inst=inst, url=connect_info.url)
         LOG.info(msg)
 
         if self.do_user_bind and not self.current_password:
-            first_prompt = _("Current password of user {!r}:").format(self.user_uid) + ' '
+            first_prompt = _('Current password of user {!r}:').format(self.user_uid) + ' '
             second_prompt = _('Repeat password:') + ' '
             self.current_password = self.get_password(
                 first_prompt, second_prompt, may_empty=False, repeat=False)
@@ -312,28 +310,28 @@ class SetLdapPasswordApplication(BaseLdapApplication):
             for method in self.available_schemes:
                 schema_id = self.schema_ids[method]
                 if self.verbose > 2:
-                    LOG.debug("Testing for {m!r} ({s}) ...".format(m=method, s=schema_id))
+                    LOG.debug('Testing for {m!r} ({s}) ...'.format(m=method, s=schema_id))
                 if schema_id == self.default_schema:
                     self.passlib_context.update(default=method)
                     self.schema = method
                     self.schema_id = schema_id
             msg = _(
-                "Non admin users must use the default schema {!r} for hashing "
-                "their password.").format(self.schema_id)
+                'Non admin users must use the default schema {!r} for hashing '
+                'their password.').format(self.schema_id)
             LOG.warn(msg)
 
         if not self.new_password:
-            first_prompt = _("New password of user {!r}:").format(self.user_uid) + ' '
+            first_prompt = _('New password of user {!r}:').format(self.user_uid) + ' '
             second_prompt = _('Repeat password:') + ' '
             self.new_password = self.get_password(
                 first_prompt, second_prompt, may_empty=False, repeat=True)
 
         if self.no_cracklib:
-            msg = _("Checking the quality of the new password was disabled.")
+            msg = _('Checking the quality of the new password was disabled.')
             LOG.warn(msg)
         else:
             if self.pwd_handler.check_password_quality(self.new_password):
-                LOG.debug("The quality of the new password seems to be sufficient.")
+                LOG.debug('The quality of the new password seems to be sufficient.')
             else:
                 self.exit(1)
 
@@ -359,20 +357,20 @@ class SetLdapPasswordApplication(BaseLdapApplication):
             if self.do_user_bind:
                 if self.user_connection:
                     if self.verbose > 1:
-                        LOG.debug(_("Unbinding user connection from LDAP server {} ...").format(
+                        LOG.debug(_('Unbinding user connection from LDAP server {} ...').format(
                             connect_info.url))
                     self.user_connection.unbind()
                     self.user_connection = None
 
     # -------------------------------------------------------------------------
     def test_user_bind(self):
-
+        """Execute a connect to LDAP-Server to test the given old user credentials."""
         inst = self.ldap_instances[0]
         connect_info = self.cfg.ldap_connection[inst]
 
         msg = _(
-            "Testing connect to LDAP-Server {url} with current user {dn!r} and "
-            "password ...").format(url=connect_info.url, dn=self.user_dn)
+            'Testing connect to LDAP-Server {url} with current user {dn!r} and '
+            'password ...').format(url=connect_info.url, dn=self.user_dn)
         LOG.debug(msg)
 
         ldap_server = None
@@ -382,25 +380,25 @@ class SetLdapPasswordApplication(BaseLdapApplication):
             ldap_server = self.get_ldap_server_obj(inst)
             ldap_connection = self.connect_to_ldap_server(
                 ldap_server, inst, bind_dn=self.user_dn, bind_pw=self.current_password)
-            msg = _("Successful connected as {dn!r} to {url}.").format(
+            msg = _('Successful connected as {dn!r} to {url}.').format(
                 url=connect_info.url, dn=self.user_dn)
             LOG.debug(msg)
             self.user_connection = ldap_connection
 
         except LDAPBindError as e:
-            msg = _("Could not connect to {url} as {dn!r}: {e}").format(
+            msg = _('Could not connect to {url} as {dn!r}: {e}').format(
                 url=connect_info.url, dn=self.user_dn, e=e)
             self.exit(6, msg)
 
     # -------------------------------------------------------------------------
     def get_current_password_hash(self):
-
+        """Get the current password hash of the given user."""
         inst = self.ldap_instances[0]
         connect_info = self.cfg.ldap_connection[inst]
 
         if self.verbose > 1:
             msg = _(
-                "Trying to get current password hash of user {!r} ...").format(self.user_dn)
+                'Trying to get current password hash of user {!r} ...').format(self.user_dn)
             LOG.debug(msg)
 
         attributes = ['carLicense', 'ppFirstPassword', 'userPassword']
@@ -408,7 +406,7 @@ class SetLdapPasswordApplication(BaseLdapApplication):
         entry = self.get_entry(self.user_dn, inst, attributes=attributes)
 
         if not entry:
-            msg = _("User with DN {dn!r} not found in {uri}.").format(
+            msg = _('User with DN {dn!r} not found in {uri}.').format(
                 dn=self.user_dn, uri=connect_info.url)
             LOG.error(msg)
             self.exit(6)
@@ -423,24 +421,23 @@ class SetLdapPasswordApplication(BaseLdapApplication):
 
     # -------------------------------------------------------------------------
     def search_user_dn(self):
-        """Searching the LDAP DN of the user, whose password should be changed."""
-
+        """Search the LDAP DN of the user, whose password should be changed."""
         inst = self.ldap_instances[0]
         connect_info = self.cfg.ldap_connection[inst]
 
         dns = self.get_user_dn(self.user_uid, inst)
         if dns:
             if self.verbose > 2:
-                msg = _("Got DN {dn!r} for user {user!r} in LDAP instance {inst}.").format(
+                msg = _('Got DN {dn!r} for user {user!r} in LDAP instance {inst}.').format(
                     dn=dns, user=self.user_uid, inst=connect_info.url)
                 LOG.debug(msg)
             if is_sequence(dns):
                 if len(dns) > 1:
-                    msg = _("Found {nr} entries for user {u!r} in LDAP instance {i}.").format(
+                    msg = _('Found {nr} entries for user {u!r} in LDAP instance {i}.').format(
                         nr=len(dns), u=self.user_uid, i=connect_info.url)
                     msg += ' ' + _(
-                        "Please use another username, or use the correct DN from the following "
-                        "list as a parameter for this script instead of the username:")
+                        'Please use another username, or use the correct DN from the following '
+                        'list as a parameter for this script instead of the username:')
                     for dn in dns:
                         msg += '\n * ' + dn
                     LOG.warn(msg)
@@ -450,17 +447,17 @@ class SetLdapPasswordApplication(BaseLdapApplication):
             else:
                 self.user_dn = dns
         else:
-            msg = _("Did not found user {user!r} in LDAP instance {inst}.").format(
+            msg = _('Did not found user {user!r} in LDAP instance {inst}.').format(
                 user=self.user_uid, inst=connect_info.url)
             LOG.error(msg)
             self.exit(7)
 
-        LOG.info(_("Changing the password of user {dn!r} in LDAP instance {inst}.").format(
+        LOG.info(_('Changing the password of user {dn!r} in LDAP instance {inst}.').format(
             dn=self.user_dn, inst=connect_info.url))
 
     # -------------------------------------------------------------------------
     def do_set_password(self):
-
+        """Set the new password of the given user finally."""
         print()
         msg = _("Setting password of '{dn}' with hashing schema '{schema}' ...").format(
             dn=self.colored(self.user_dn, 'CYAN'),
@@ -478,7 +475,7 @@ class SetLdapPasswordApplication(BaseLdapApplication):
         salt = getattr(self.args, 'salt', None)
         rounds = getattr(self.args, 'rounds', None)
 
-        LOG.debug(_("Used schema: {!r}.").format(self.pwd_handler.schema))
+        LOG.debug(_('Used schema: {!r}.').format(self.pwd_handler.schema))
         try:
             hashed_passwd = self.pwd_handler.get_hash(
                 self.new_password, self.pwd_handler.schema, salt=salt, rounds=rounds)
@@ -488,21 +485,21 @@ class SetLdapPasswordApplication(BaseLdapApplication):
         print(msg)
 
         print()
-        msg = _("Apply new password? [{yes}/{no}]?").format(
+        msg = _('Apply new password? [{yes}/{no}]?').format(
             yes=self.colored(_('yes'), 'RED'), no=self.colored(_('No'), 'GREEN')) + ' '
         do_set_passwd = self.ask_for_yes_or_no(msg, default_on_empty=False)
         print()
 
         if not do_set_passwd:
-            msg = _("Do not setting password for {!r}.").format(self.user_dn)
+            msg = _('Do not setting password for {!r}.').format(self.user_dn)
             LOG.info(msg)
             self.exit(0)
             return
 
-        self.set_user_password(hashed_passwd)
+        self._set_user_password(hashed_passwd)
 
     # -------------------------------------------------------------------------
-    def set_user_password(self, hashed_passwd):
+    def _set_user_password(self, hashed_passwd):
 
         changes = {}
         changes['userPassword'] = [(MODIFY_REPLACE, hashed_passwd)]
@@ -510,20 +507,20 @@ class SetLdapPasswordApplication(BaseLdapApplication):
         inst = self.ldap_instances[0]
         # connect_info = self.cfg.ldap_connection[inst]
 
-        msg = _("Setting password ...")
+        msg = _('Setting password ...')
         LOG.info(msg)
 
         try:
             self.modify_entry(inst, self.user_dn, changes, ldap=self.user_connection)
         except FatalLDAPError as e:
-            msg = _("{c} on deactivating user {dn!r}: {e}").format(
+            msg = _('{c} on setting password of user {dn!r}: {e}').format(
                 c=e.__class__.__name__, dn=self.user_dn, e=e)
             msg += '\n' + _('Changes:') + '\n' + pp(changes)
             LOG.error(msg)
 
 
 # =============================================================================
-if __name__ == "__main__":
+if __name__ == '__main__':
 
     pass
 
index 23748061f98185819be3a4f3a1a65e6db54d63d9..5392876713ccef1778736dfc1d6c2aa0dc47efcc 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pp_admintools 0.9.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-06-12 16:57+0200\n"
-"PO-Revision-Date: 2023-06-12 17:00+0200\n"
+"POT-Creation-Date: 2023-06-13 13:45+0200\n"
+"PO-Revision-Date: 2023-06-13 13:50+0200\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: de_DE\n"
 "Language-Team: de_DE <solution@pixelpark.com>\n"
@@ -441,7 +441,7 @@ msgid "Generation of the BIND9 configuration file for slave zones."
 msgstr "Generierung der BIND9-Konfigurationsdatei für Slave-Zonen."
 
 #: lib/pp_admintools/app/dns_deploy_zones.py:250 lib/pp_admintools/app/mk_ldap_passwd.py:86
-#: lib/pp_admintools/app/set_ldap_password.py:124
+#: lib/pp_admintools/app/set_ldap_password.py:125
 msgid "Options for {}"
 msgstr "Optionen für {}"
 
@@ -797,7 +797,7 @@ msgid "Options fo LDAP connections"
 msgstr "Optionen für die LDAP-Verbindungen"
 
 #: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:238
-#: lib/pp_admintools/app/remove_ldap_user.py:307 lib/pp_admintools/app/set_ldap_password.py:492
+#: lib/pp_admintools/app/remove_ldap_user.py:308 lib/pp_admintools/app/set_ldap_password.py:489
 msgid "No"
 msgstr "Nein"
 
@@ -835,8 +835,8 @@ msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}"
 msgstr "Die Bind-DN, die zur Verbindung mit dem LDAP-Server verwendet werden soll. Vorgabe: {!r}"
 
 #: lib/pp_admintools/app/ldap.py:379 lib/pp_admintools/app/mk_ldap_passwd.py:131
-#: lib/pp_admintools/app/set_ldap_password.py:130 lib/pp_admintools/app/set_ldap_password.py:131
-#: lib/pp_admintools/app/set_ldap_password.py:148 lib/pp_admintools/app/set_ldap_password.py:151
+#: lib/pp_admintools/app/set_ldap_password.py:131 lib/pp_admintools/app/set_ldap_password.py:132
+#: lib/pp_admintools/app/set_ldap_password.py:149 lib/pp_admintools/app/set_ldap_password.py:152
 msgid "PASSWORD"
 msgstr "PASSWORT"
 
@@ -852,8 +852,8 @@ msgstr ""
 "Nachfrage nach dem Passwort für eine einfache LDAP-Authentifizierung. Dies wird anstelle der "
 "Angabe des Passwortes an der Kommandozeile verwendet."
 
-#: lib/pp_admintools/app/ldap.py:391 lib/pp_admintools/app/set_ldap_password.py:142
-#: lib/pp_admintools/app/set_ldap_password.py:144
+#: lib/pp_admintools/app/ldap.py:391 lib/pp_admintools/app/set_ldap_password.py:143
+#: lib/pp_admintools/app/set_ldap_password.py:145
 msgid "PASSWORD_FILE"
 msgstr "PASSWORT_DATEI"
 
@@ -1029,7 +1029,7 @@ msgstr "Versuche den DN des Nutzer {u!r} als LDAP DN zu ermitteln …"
 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..."
 msgstr "Versuche den DN des Nutzer {u!r} als UID (POSIX Benutzername) zu ermitteln …"
 
-#: lib/pp_admintools/app/ldap.py:971 lib/pp_admintools/app/remove_ldap_user.py:317
+#: lib/pp_admintools/app/ldap.py:971 lib/pp_admintools/app/remove_ldap_user.py:318
 msgid "Empty user given."
 msgstr "Leere Nutzername übergeben."
 
@@ -1068,7 +1068,7 @@ msgstr "Ergebnis der Suche nach CN {cn!r}:"
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr "Ein Nutzer mit dem CN {cn!r} wurde nicht in {uri}/{bdn} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1149 lib/pp_admintools/app/set_ldap_password.py:411
+#: lib/pp_admintools/app/ldap.py:1149 lib/pp_admintools/app/set_ldap_password.py:409
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr "Ein Nutzer mit dem DN {dn!r} wurde nicht in {uri} gefunden."
 
@@ -1133,10 +1133,10 @@ msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr "Die Änderung von {dn!r} war NICHT erfolgreich - {c}: {e}"
 
 #: lib/pp_admintools/app/ldap.py:1325 lib/pp_admintools/app/ldap.py:1344
-#: lib/pp_admintools/app/remove_ldap_user.py:448 lib/pp_admintools/app/remove_ldap_user.py:475
-#: lib/pp_admintools/app/remove_ldap_user.py:502 lib/pp_admintools/app/remove_ldap_user.py:533
-#: lib/pp_admintools/app/remove_ldap_user.py:564 lib/pp_admintools/app/remove_ldap_user.py:680
-#: lib/pp_admintools/app/set_ldap_password.py:521
+#: lib/pp_admintools/app/remove_ldap_user.py:449 lib/pp_admintools/app/remove_ldap_user.py:476
+#: lib/pp_admintools/app/remove_ldap_user.py:503 lib/pp_admintools/app/remove_ldap_user.py:534
+#: lib/pp_admintools/app/remove_ldap_user.py:565 lib/pp_admintools/app/remove_ldap_user.py:681
+#: lib/pp_admintools/app/set_ldap_password.py:518
 msgid "Changes:"
 msgstr "Änderungen:"
 
@@ -1388,8 +1388,8 @@ msgstr ""
 "Starte Spiegelung der LDAP-Instanz {src!r} ({src_url}) zur Instanz {tgt!r} ({tgt_url}) "
 "[{yes}/{no}]?"
 
-#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:307
-#: lib/pp_admintools/app/set_ldap_password.py:492
+#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:308
+#: lib/pp_admintools/app/set_ldap_password.py:489
 msgid "yes"
 msgstr "ja"
 
@@ -1631,7 +1631,7 @@ msgstr "TYP"
 msgid "Like {}"
 msgstr "Wie {}"
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:115 lib/pp_admintools/app/set_ldap_password.py:207
+#: lib/pp_admintools/app/mk_ldap_passwd.py:115 lib/pp_admintools/app/set_ldap_password.py:208
 msgid ""
 "A possible salt to use on hashing the password. Caution: not all hashing schemes are supporting "
 "a salt."
@@ -1639,7 +1639,7 @@ msgstr ""
 "Ein optionaler Salt, der zum Hashen des Passwortes verwendet werden kann. Achtung: nicht alle "
 "Hashing-Schemen unterstützen einen Salt."
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:122 lib/pp_admintools/app/set_ldap_password.py:214
+#: lib/pp_admintools/app/mk_ldap_passwd.py:122 lib/pp_admintools/app/set_ldap_password.py:215
 msgid ""
 "The number of calculation rounds to use on hashing the password. Caution: not all hashing "
 "schemes are supporting calculation rounds."
@@ -1663,8 +1663,8 @@ msgstr "Kein Passwort üver {} erhalten."
 msgid "Password:"
 msgstr "Passwort:"
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:179 lib/pp_admintools/app/set_ldap_password.py:307
-#: lib/pp_admintools/app/set_ldap_password.py:327
+#: lib/pp_admintools/app/mk_ldap_passwd.py:179 lib/pp_admintools/app/set_ldap_password.py:305
+#: lib/pp_admintools/app/set_ldap_password.py:325
 msgid "Repeat password:"
 msgstr "Passwort-Wiederholung:"
 
@@ -1672,7 +1672,7 @@ msgstr "Passwort-Wiederholung:"
 msgid "Encrypting password with hashing schema '{schema}' ..."
 msgstr "Verschlüsseln des Passwortes mit dem Hashing-Schema '{schema}' …"
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:200 lib/pp_admintools/app/set_ldap_password.py:481
+#: lib/pp_admintools/app/mk_ldap_passwd.py:200 lib/pp_admintools/app/set_ldap_password.py:478
 msgid "Used schema: {!r}."
 msgstr "Verwendetes Schama : {!r}."
 
@@ -1788,7 +1788,7 @@ msgstr "Erhaltene Antwort:"
 msgid "Zone object:"
 msgstr "Zonen-Objekt:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:76
+#: lib/pp_admintools/app/remove_ldap_user.py:77
 msgid ""
 "Disables or removes the given users from LDAP. If disabling, then the user will not be really "
 "removed, but disabled by locking the password, setting all status flags to {inact!r}, assigning "
@@ -1800,36 +1800,36 @@ msgstr ""
 "auf {inact!r}, Zuweisen von {shell!r} als Login-Shell und Löschen des Nutzers aus allen Gruppen "
 "deaktiviert. Beim Löschen wird der Nutzer tatsächlich im LDAP gelöscht."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:133
+#: lib/pp_admintools/app/remove_ldap_user.py:134
 msgid "Removing options"
 msgstr "Lösch-Optionen"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:136
+#: lib/pp_admintools/app/remove_ldap_user.py:137
 msgid "This is the default."
 msgstr "Dieses ist die Vorgabe."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:137
+#: lib/pp_admintools/app/remove_ldap_user.py:138
 msgid "This is mutually exclusive to {!r}."
 msgstr "Das schließt sich mit {!r} gegenseitig aus."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:139
+#: lib/pp_admintools/app/remove_ldap_user.py:140
 msgid "Deactivating the user instead of removing it."
 msgstr "Deaktivieren der Nutzer anstatt Löschung."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:146
+#: lib/pp_admintools/app/remove_ldap_user.py:147
 msgid "Removing the user from LDAP."
 msgstr "Löschen der übergebenen Nutzer im LDAP."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:153
+#: lib/pp_admintools/app/remove_ldap_user.py:154
 msgid "Don't remove all mail addresses of the users to remove from all mailing lists."
 msgstr "Kein Löschen aller Mailadressen der zu löschenden Nutzer aus allen Mailing-Listen."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:161 lib/pp_admintools/app/set_ldap_password.py:200
-#: lib/pp_admintools/app/set_ldap_password.py:203
+#: lib/pp_admintools/app/remove_ldap_user.py:162 lib/pp_admintools/app/set_ldap_password.py:201
+#: lib/pp_admintools/app/set_ldap_password.py:204
 msgid "USER"
 msgstr "NUTZER"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:162
+#: lib/pp_admintools/app/remove_ldap_user.py:163
 msgid ""
 "The user, which should be deactivated or removed. They may be given by their Uid (the "
 "alphanumeric POSIX name), their mail address or their LDAP DN (be aware, that this may be "
@@ -1840,189 +1840,189 @@ msgstr ""
 "angegeben werden. Bitte beachten, dass sich letzterer bei den verschiedenen LDAP-Instanzen "
 "unterscheiden kann."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:183
+#: lib/pp_admintools/app/remove_ldap_user.py:184
 msgid "No users to remove given."
 msgstr "Kein Nutzername zum Löschen angegeben."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:201
+#: lib/pp_admintools/app/remove_ldap_user.py:202
 msgid "Checking given instances for admin and read/write access."
 msgstr "Überprüfe die gegebenen Instanzen nach Admin- und Schreib-/Lesezugriffsrechten."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:208
+#: lib/pp_admintools/app/remove_ldap_user.py:209
 msgid "LDAP instance {!r} not found in configuration."
 msgstr "Die LDAP-Instanz {!r} wurde nicht in der Konfiguration gefunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:216
+#: lib/pp_admintools/app/remove_ldap_user.py:217
 msgid "LDAP instance {!r} has only readonly access."
 msgstr "Die LDAP-Instanz {!r} besitzt nur Lesezugriffsrechte."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:221
+#: lib/pp_admintools/app/remove_ldap_user.py:222
 msgid "No admin access to LDAP instance {!r}."
 msgstr "Keine Admin-Zugriffsrechte bei LDAP-Instanz {!r}."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:238
+#: lib/pp_admintools/app/remove_ldap_user.py:239
 msgid "All given users were not found in any LDAP instance."
 msgstr "Alle übergebenen Nutzer wurden in keiner der LDAP-Instanzen gefunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:243
+#: lib/pp_admintools/app/remove_ldap_user.py:244
 msgid "Evaluated DNs to remove:"
 msgstr "Zum Löschen ermittelte DNs:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:252
+#: lib/pp_admintools/app/remove_ldap_user.py:253
 msgid "Start disabling user entries in:"
 msgstr "Beginne Deaktivierung der Nutzereinträge in:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:254
+#: lib/pp_admintools/app/remove_ldap_user.py:255
 msgid "Start removing user entries in:"
 msgstr "Beginne Löschung der Nutzereinträge in:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:258
+#: lib/pp_admintools/app/remove_ldap_user.py:259
 msgid "Start disabling user entries ..."
 msgstr "Beginne Deaktivierung der Nutzereinträge …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:260
+#: lib/pp_admintools/app/remove_ldap_user.py:261
 msgid "Start removing user entries ..."
 msgstr "Beginne Löschung der Nutzereinträge …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:275
+#: lib/pp_admintools/app/remove_ldap_user.py:276
 msgid "Do you really want to deactivate the following users?"
 msgstr "Möchten Sie die folgenden Nutzer wirklich deaktivieren?"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:277
+#: lib/pp_admintools/app/remove_ldap_user.py:278
 msgid "Do you really want to remove the following users?"
 msgstr "Möchten Sie die folgenden Nutzer wirklich löschen?"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:303
+#: lib/pp_admintools/app/remove_ldap_user.py:304
 msgid "Deactivate [{yes}/{no}]?"
 msgstr "Deaktivieren [{yes}/{no}]?"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:305
+#: lib/pp_admintools/app/remove_ldap_user.py:306
 msgid "Remove [{yes}/{no}]?"
 msgstr "Löschen [{yes}/{no}]?"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:313
+#: lib/pp_admintools/app/remove_ldap_user.py:314
 msgid "Evaluating DNs of the user {!r} to remove ..."
 msgstr "Ermitteln der DNs des Nutzers {!r} zum Löschen …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:327 lib/pp_admintools/app/set_ldap_password.py:434
+#: lib/pp_admintools/app/remove_ldap_user.py:328 lib/pp_admintools/app/set_ldap_password.py:431
 msgid "Got DN {dn!r} for user {user!r} in LDAP instance {inst}."
 msgstr "Habe DN {dn!r} für den Nutzer {user!r} in der LDAP-Instanz {inst} ermittelt."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:334 lib/pp_admintools/app/set_ldap_password.py:439
+#: lib/pp_admintools/app/remove_ldap_user.py:335 lib/pp_admintools/app/set_ldap_password.py:436
 msgid "Found {nr} entries for user {u!r} in LDAP instance {i}."
 msgstr "Fand {nr} Einträge für den Nutzer {u!r} in der LDAP-Instanz {i}."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:346 lib/pp_admintools/app/set_ldap_password.py:453
+#: lib/pp_admintools/app/remove_ldap_user.py:347 lib/pp_admintools/app/set_ldap_password.py:450
 msgid "Did not found user {user!r} in LDAP instance {inst}."
 msgstr "Der Nutzer {user!r} wurde nicht in der LDAP-Instanz {inst} gefunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:355
+#: lib/pp_admintools/app/remove_ldap_user.py:356
 msgid "Deactivating all given users from {} ..."
 msgstr "Deaktivieren aller übergebenen Nutzer in {} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:357
+#: lib/pp_admintools/app/remove_ldap_user.py:358
 msgid "Removing all given users from {} ..."
 msgstr "Lösche alle übergebenen Nutzer in {} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:372
+#: lib/pp_admintools/app/remove_ldap_user.py:373
 msgid "Deactivating user {dn!r} from {inst} ..."
 msgstr "Deaktivieren von Nutzer {dn!r} in {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:375
+#: lib/pp_admintools/app/remove_ldap_user.py:376
 msgid "Removing user {dn!r} from {inst} ..."
 msgstr "Lösche Nutzer {dn!r} in {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:381
+#: lib/pp_admintools/app/remove_ldap_user.py:382
 msgid "Attributes of {!r}:"
 msgstr "Attribute von {!r}:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:406
+#: lib/pp_admintools/app/remove_ldap_user.py:407
 msgid "{c} on removing user {dn!r}: {e}"
 msgstr "{c} beim Löschen des Nutzers {dn!r}: {e}"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:412
+#: lib/pp_admintools/app/remove_ldap_user.py:413
 msgid "User {dn!r} successful deactivated on {inst}."
 msgstr "Der Nutzer {dn!r} wurde erfolgreich auf {inst} deaktiviert."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:415
+#: lib/pp_admintools/app/remove_ldap_user.py:416
 msgid "User {dn!r} successful removed from {inst}."
 msgstr "Der Nutzer {dn!r} wurde erfolgreich von {inst} gelöscht."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:441
+#: lib/pp_admintools/app/remove_ldap_user.py:442
 msgid "Updating user info for {dn!r} on {inst} ..."
 msgstr "Aktualisiere die Nutzerinformationenn für {dn!r} in {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:446 lib/pp_admintools/app/set_ldap_password.py:519
+#: lib/pp_admintools/app/remove_ldap_user.py:447
 msgid "{c} on deactivating user {dn!r}: {e}"
 msgstr "{c} beim Deaktivieren des Nutzers {dn!r}: {e}"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:462
+#: lib/pp_admintools/app/remove_ldap_user.py:463
 msgid "Did not found any group memberships of {dn!r} in {inst}."
 msgstr "Keine Gruppenmitgliedschaften von {dn!r} in {inst} gefunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:468 lib/pp_admintools/app/remove_ldap_user.py:495
-#: lib/pp_admintools/app/remove_ldap_user.py:526 lib/pp_admintools/app/remove_ldap_user.py:557
+#: lib/pp_admintools/app/remove_ldap_user.py:469 lib/pp_admintools/app/remove_ldap_user.py:496
+#: lib/pp_admintools/app/remove_ldap_user.py:527 lib/pp_admintools/app/remove_ldap_user.py:558
 msgid "Removing user {u!r} from group {g!r} ..."
 msgstr "Lösche Nutzer {u!r} aus der Gruppe {g!r} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:473 lib/pp_admintools/app/remove_ldap_user.py:500
-#: lib/pp_admintools/app/remove_ldap_user.py:531 lib/pp_admintools/app/remove_ldap_user.py:562
+#: lib/pp_admintools/app/remove_ldap_user.py:474 lib/pp_admintools/app/remove_ldap_user.py:501
+#: lib/pp_admintools/app/remove_ldap_user.py:532 lib/pp_admintools/app/remove_ldap_user.py:563
 msgid "{c} on removing user {dn!r} from group {g!r}: {e}"
 msgstr "{c} beim Löschen des Nutzers {dn!r} von der Gruppe {g!r}: {e}"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:489
+#: lib/pp_admintools/app/remove_ldap_user.py:490
 msgid "Did not found any unique group memberships of {dn!r} in {inst}."
 msgstr "Keine eindeutigen Gruppenmitgliedschaften von {dn!r} in {inst} gefunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:513
+#: lib/pp_admintools/app/remove_ldap_user.py:514
 msgid "Deleting user {uid!r} from all POSIX groups in {inst}."
 msgstr "Lösche Nutzer {uid!r} aus allen POSIX-Gruppen in {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:520
+#: lib/pp_admintools/app/remove_ldap_user.py:521
 msgid "Did not found any POSIX group memberships of {uid!r} in {inst}."
 msgstr "Keine POSIX-Gruppenmitgliedschaften von {uid!r} in {inst} gefunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:544
+#: lib/pp_admintools/app/remove_ldap_user.py:545
 msgid "Deleting user {uid!r} from all sudo groups in {inst}."
 msgstr "Lösche Nutzer {uid!r} aus allen sudo-Gruppen in {inst}."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:551
+#: lib/pp_admintools/app/remove_ldap_user.py:552
 msgid "Did not found any sudo group memberships of {uid!r} in {inst}."
 msgstr "Keine sudo-Gruppenmitgliedschaften von {uid!r} in {inst} gefunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:584
+#: lib/pp_admintools/app/remove_ldap_user.py:585
 msgid "No mail addresses found to remove for user {!r}."
 msgstr "Keine Mailadressen des Nutzers {!r} zum Löschen efunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:588
+#: lib/pp_admintools/app/remove_ldap_user.py:589
 msgid "Trying to remove the following mail addresses from mailing lists:"
 msgstr "Versuche die folgenden Mailadressen aus Mailinglisten zu löschen:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:608
+#: lib/pp_admintools/app/remove_ldap_user.py:609
 msgid "Ignoring mailing list {!r} ..."
 msgstr "Ignoriere Mailingliste {!r} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:613
+#: lib/pp_admintools/app/remove_ldap_user.py:614
 msgid "Found DNs of mailing lists:"
 msgstr "Gefundene DNs für Mailinglisten:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:618
+#: lib/pp_admintools/app/remove_ldap_user.py:619
 msgid "Did not found any mail groups including address {!r}."
 msgstr "Keine Mailgruppen gefunden, die die Adresse {!r} enthalten."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:631
+#: lib/pp_admintools/app/remove_ldap_user.py:632
 msgid "Removing address {address!r} from mailing list {dn!r}."
 msgstr "Lösche Adresse {address!r} von Mailingliste {dn!r}."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:670
+#: lib/pp_admintools/app/remove_ldap_user.py:671
 msgid "There are no changes for mail {mail!r} on {dn!r}?!?"
 msgstr "Es gibt keine Änderungen für die Mailadresse {mail!r} in {dn!r}?!?"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:678
+#: lib/pp_admintools/app/remove_ldap_user.py:679
 msgid "{c} on removing mail {mail!r} from {dn!r}: {e}"
 msgstr "{c} beim Löschen des der Mailadresse {mail!r} von {dn!r}: {e}"
 
-#: lib/pp_admintools/app/set_ldap_password.py:90
+#: lib/pp_admintools/app/set_ldap_password.py:92
 msgid ""
 "Changing the password of the given user. If no user was given, then {app} tries to use the name "
 "of the user logged in on the controlling terminal."
@@ -2030,11 +2030,11 @@ msgstr ""
 "Ändern des Passwortes des angegebenen Nutzers. Wenn kein Nutzer angegeben wird, versucht {app} "
 "den Namen des am Terminal angemeldeten Nutzers zu verwenden."
 
-#: lib/pp_admintools/app/set_ldap_password.py:131
+#: lib/pp_admintools/app/set_ldap_password.py:132
 msgid "Use {} as the current user password."
 msgstr "Verwende {} als das aktuelle Nutzerpasswort."
 
-#: lib/pp_admintools/app/set_ldap_password.py:136
+#: lib/pp_admintools/app/set_ldap_password.py:137
 msgid ""
 "Prompt for current user password. This is used instead of specifying the password on the command"
 " line."
@@ -2042,19 +2042,19 @@ msgstr ""
 "Nachfrage nach dem aktuellen Passwort des Nutzers. Das wird anstelle der Angabe des Passortes in"
 " der Kommandozeile verwendet."
 
-#: lib/pp_admintools/app/set_ldap_password.py:144
+#: lib/pp_admintools/app/set_ldap_password.py:145
 msgid "Use contents of {} as the current user password."
 msgstr "Verwende den Inhalt von {} als das aktuelle Nutzerpasswort."
 
-#: lib/pp_admintools/app/set_ldap_password.py:149
+#: lib/pp_admintools/app/set_ldap_password.py:150
 msgid "Use {} as the new user password. If not given, it will be asked for it."
 msgstr "Verwende {} als das neue Nutzerpasswort. Wenn nicht angegeben, wird danach gefragt."
 
-#: lib/pp_admintools/app/set_ldap_password.py:157
+#: lib/pp_admintools/app/set_ldap_password.py:158
 msgid "Do not check the quality of the new password with the {} library."
 msgstr "Keine Überprüfung der Qualität des neuen Passwortes mit der {}-Bibliothek."
 
-#: lib/pp_admintools/app/set_ldap_password.py:172
+#: lib/pp_admintools/app/set_ldap_password.py:173
 msgid ""
 "The schema (hashing method) to use to hash the new password. It is possible to give here the "
 "value {val_list!r}, then all possible schemes are shown and exit. Default: {default!r}."
@@ -2063,17 +2063,17 @@ msgstr ""
 "möglich, hier den Wert {val_list!r} anzugeben, dann werden alle verfügbaren Schemen aufgelistet."
 " Vorgabe: {default!r}."
 
-#: lib/pp_admintools/app/set_ldap_password.py:177
+#: lib/pp_admintools/app/set_ldap_password.py:178
 msgid "If you are not using an admin account, then the password will hashed only by the default schema."
 msgstr ""
 "Wenn kein Admin-Account verwendet wird, dann wird das Passwort ausschließlich mit dem Vorgabe-"
 "Schema gehasht."
 
-#: lib/pp_admintools/app/set_ldap_password.py:182
+#: lib/pp_admintools/app/set_ldap_password.py:183
 msgid "SCHEMA"
 msgstr "SCHEMA"
 
-#: lib/pp_admintools/app/set_ldap_password.py:186
+#: lib/pp_admintools/app/set_ldap_password.py:187
 msgid ""
 "The user, which password in the given LDAP instance should be changed. It may be given by its "
 "Uid (the alphanumeric POSIX name), its mail address or its LDAP DN."
@@ -2082,11 +2082,11 @@ msgstr ""
 "seine Uid (der alphanumerische POSIX-Nutzername), als seine Mailadresse oder als seine LDAP-DN "
 "angegeben werden."
 
-#: lib/pp_admintools/app/set_ldap_password.py:191
+#: lib/pp_admintools/app/set_ldap_password.py:192
 msgid "If not given, then your current user name {!r} will be used."
 msgstr "Wenn nicht angegeben, dann wird der aktuelle Nutzername {!r} verwendet."
 
-#: lib/pp_admintools/app/set_ldap_password.py:194
+#: lib/pp_admintools/app/set_ldap_password.py:195
 msgid ""
 "If you are using a readonly LDAP instance or an instance w/o admin access, then you must provide"
 " somehow the current password of the user to change."
@@ -2094,55 +2094,55 @@ msgstr ""
 "Wenn eine LDAP-Instanz verwendet wird, die nur Leserechte oder keinen Admin-Zugriff hat, dann "
 "muss irgendwie das neue Passwort des Nutzer zum Ändern angegeben werden."
 
-#: lib/pp_admintools/app/set_ldap_password.py:263
+#: lib/pp_admintools/app/set_ldap_password.py:261
 msgid "Could not detect your current login name."
 msgstr "Konnte den aktuellen Anmeldenamen nicht ermitteln."
 
-#: lib/pp_admintools/app/set_ldap_password.py:268
+#: lib/pp_admintools/app/set_ldap_password.py:266
 msgid "The user {!r} will never be managed by LDAP."
 msgstr "Der Nutzer {!r} wird niemals nimmer nicht von LDAP gemanagt."
 
-#: lib/pp_admintools/app/set_ldap_password.py:302
+#: lib/pp_admintools/app/set_ldap_password.py:300
 msgid "Using LDAP instance {inst!r} - {url}."
 msgstr "Verwende LDAP-Instanz {inst!r} - {url}."
 
-#: lib/pp_admintools/app/set_ldap_password.py:306
+#: lib/pp_admintools/app/set_ldap_password.py:304
 msgid "Current password of user {!r}:"
 msgstr "Aktuelles Passwort des Nutzers {!r}:"
 
-#: lib/pp_admintools/app/set_ldap_password.py:320
+#: lib/pp_admintools/app/set_ldap_password.py:318
 msgid "Non admin users must use the default schema {!r} for hashing their password."
 msgstr "Nicht-Admin-Nutzer müssen das Vorgabeschema {!r} für das Hashen des Passwortes verwenden."
 
-#: lib/pp_admintools/app/set_ldap_password.py:326
+#: lib/pp_admintools/app/set_ldap_password.py:324
 msgid "New password of user {!r}:"
 msgstr "Neues Passwort für Nutzer {!r}:"
 
-#: lib/pp_admintools/app/set_ldap_password.py:332
+#: lib/pp_admintools/app/set_ldap_password.py:330
 msgid "Checking the quality of the new password was disabled."
 msgstr "Die Überprüfung der Qualität des neuen Passwortes wurde deaktiviert."
 
-#: lib/pp_admintools/app/set_ldap_password.py:362
+#: lib/pp_admintools/app/set_ldap_password.py:360
 msgid "Unbinding user connection from LDAP server {} ..."
 msgstr "Trenne Verbindung des Nutzers zu LDAP-Server {} …"
 
-#: lib/pp_admintools/app/set_ldap_password.py:373
+#: lib/pp_admintools/app/set_ldap_password.py:371
 msgid "Testing connect to LDAP-Server {url} with current user {dn!r} and password ..."
 msgstr "Teste eine Anmeldung am LDAP-Server {url} als aktueller Nutzer {dn!r} mit Passwort …"
 
-#: lib/pp_admintools/app/set_ldap_password.py:385
+#: lib/pp_admintools/app/set_ldap_password.py:383
 msgid "Successful connected as {dn!r} to {url}."
 msgstr "Erfolgreich als {dn!r} an {url} angemeldet."
 
-#: lib/pp_admintools/app/set_ldap_password.py:391
+#: lib/pp_admintools/app/set_ldap_password.py:389
 msgid "Could not connect to {url} as {dn!r}: {e}"
 msgstr "Nutzer {dn!r} konnte nicht an {url} angemeldet werden: {e}"
 
-#: lib/pp_admintools/app/set_ldap_password.py:402
+#: lib/pp_admintools/app/set_ldap_password.py:400
 msgid "Trying to get current password hash of user {!r} ..."
 msgstr "Versuche den aktuellen Passwort-Hash des Nutzers {!r} zu holen …"
 
-#: lib/pp_admintools/app/set_ldap_password.py:441
+#: lib/pp_admintools/app/set_ldap_password.py:438
 msgid ""
 "Please use another username, or use the correct DN from the following list as a parameter for "
 "this script instead of the username:"
@@ -2150,38 +2150,42 @@ msgstr ""
 "Bitte einen anderen Nutzernamen oder den richtigen DN aus der folgenden Liste als Parameter für "
 "dieses Skript als Nutzername angeben:"
 
-#: lib/pp_admintools/app/set_ldap_password.py:458
+#: lib/pp_admintools/app/set_ldap_password.py:455
 msgid "Changing the password of user {dn!r} in LDAP instance {inst}."
 msgstr "Ändern des Passwortes des Nutzers {dn!r} in der LDAP-Instanz {inst}."
 
-#: lib/pp_admintools/app/set_ldap_password.py:465
+#: lib/pp_admintools/app/set_ldap_password.py:462
 msgid "Setting password of '{dn}' with hashing schema '{schema}' ..."
 msgstr "Setze das Passwort von '{dn}' mit dem Hashing-Schema '{schema}'."
 
-#: lib/pp_admintools/app/set_ldap_password.py:471
+#: lib/pp_admintools/app/set_ldap_password.py:468
 msgid "Current password hash: '{}'."
 msgstr "Aktueller Passwort-Hash: '{}'"
 
-#: lib/pp_admintools/app/set_ldap_password.py:474
+#: lib/pp_admintools/app/set_ldap_password.py:471
 msgid "The user '{}' has currently no password."
 msgstr "Der Nutzer '{}' hat aktuell kein Passwort."
 
-#: lib/pp_admintools/app/set_ldap_password.py:487
+#: lib/pp_admintools/app/set_ldap_password.py:484
 msgid "New password hash: '{}'."
 msgstr "Neuer Passwort-Hash: '{}'."
 
-#: lib/pp_admintools/app/set_ldap_password.py:491
+#: lib/pp_admintools/app/set_ldap_password.py:488
 msgid "Apply new password? [{yes}/{no}]?"
 msgstr "Neues Passwort setzen [{yes}/{no}]?"
 
-#: lib/pp_admintools/app/set_ldap_password.py:497
+#: lib/pp_admintools/app/set_ldap_password.py:494
 msgid "Do not setting password for {!r}."
 msgstr "Passwort für {!r} wird nicht gesetzt."
 
-#: lib/pp_admintools/app/set_ldap_password.py:513
+#: lib/pp_admintools/app/set_ldap_password.py:510
 msgid "Setting password ..."
 msgstr "Setze Passwort …"
 
+#: lib/pp_admintools/app/set_ldap_password.py:516
+msgid "{c} on setting password of user {dn!r}: {e}"
+msgstr "{c} beim Setzen des Passwortes des Nutzers {dn!r}: {e}"
+
 #: lib/pp_admintools/argparse_actions.py:45
 msgid "Value {v!r} for a {what} port is invalid:"
 msgstr "Der Wert {v!r} für ein {what}-Port ist ungültig."
index c413c4030ec6af1d85e470e75feb6af2d1019040..3a1141d3119e04f677da03c0dc622d3d57c7da21 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pp_admintools 0.9.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-06-12 16:57+0200\n"
-"PO-Revision-Date: 2023-06-12 17:05+0200\n"
+"POT-Creation-Date: 2023-06-13 13:45+0200\n"
+"PO-Revision-Date: 2023-06-13 13:50+0200\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: en_US\n"
 "Language-Team: Frank Brehm <frank.brehm@pixelpark.com>\n"
@@ -427,7 +427,7 @@ msgid "Generation of the BIND9 configuration file for slave zones."
 msgstr ""
 
 #: lib/pp_admintools/app/dns_deploy_zones.py:250 lib/pp_admintools/app/mk_ldap_passwd.py:86
-#: lib/pp_admintools/app/set_ldap_password.py:124
+#: lib/pp_admintools/app/set_ldap_password.py:125
 msgid "Options for {}"
 msgstr ""
 
@@ -771,7 +771,7 @@ msgid "Options fo LDAP connections"
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:238
-#: lib/pp_admintools/app/remove_ldap_user.py:307 lib/pp_admintools/app/set_ldap_password.py:492
+#: lib/pp_admintools/app/remove_ldap_user.py:308 lib/pp_admintools/app/set_ldap_password.py:489
 msgid "No"
 msgstr ""
 
@@ -809,8 +809,8 @@ msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}"
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:379 lib/pp_admintools/app/mk_ldap_passwd.py:131
-#: lib/pp_admintools/app/set_ldap_password.py:130 lib/pp_admintools/app/set_ldap_password.py:131
-#: lib/pp_admintools/app/set_ldap_password.py:148 lib/pp_admintools/app/set_ldap_password.py:151
+#: lib/pp_admintools/app/set_ldap_password.py:131 lib/pp_admintools/app/set_ldap_password.py:132
+#: lib/pp_admintools/app/set_ldap_password.py:149 lib/pp_admintools/app/set_ldap_password.py:152
 msgid "PASSWORD"
 msgstr ""
 
@@ -824,8 +824,8 @@ msgid ""
 "command line."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:391 lib/pp_admintools/app/set_ldap_password.py:142
-#: lib/pp_admintools/app/set_ldap_password.py:144
+#: lib/pp_admintools/app/ldap.py:391 lib/pp_admintools/app/set_ldap_password.py:143
+#: lib/pp_admintools/app/set_ldap_password.py:145
 msgid "PASSWORD_FILE"
 msgstr ""
 
@@ -995,7 +995,7 @@ msgstr "Trying to evaluate DN of user {u!r} as a LDAP DN …"
 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..."
 msgstr "Trying to evaluate DN of user {u!r} as a UID (Posix user name) …"
 
-#: lib/pp_admintools/app/ldap.py:971 lib/pp_admintools/app/remove_ldap_user.py:317
+#: lib/pp_admintools/app/ldap.py:971 lib/pp_admintools/app/remove_ldap_user.py:318
 msgid "Empty user given."
 msgstr ""
 
@@ -1034,7 +1034,7 @@ msgstr ""
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1149 lib/pp_admintools/app/set_ldap_password.py:411
+#: lib/pp_admintools/app/ldap.py:1149 lib/pp_admintools/app/set_ldap_password.py:409
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr ""
 
@@ -1099,10 +1099,10 @@ msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:1325 lib/pp_admintools/app/ldap.py:1344
-#: lib/pp_admintools/app/remove_ldap_user.py:448 lib/pp_admintools/app/remove_ldap_user.py:475
-#: lib/pp_admintools/app/remove_ldap_user.py:502 lib/pp_admintools/app/remove_ldap_user.py:533
-#: lib/pp_admintools/app/remove_ldap_user.py:564 lib/pp_admintools/app/remove_ldap_user.py:680
-#: lib/pp_admintools/app/set_ldap_password.py:521
+#: lib/pp_admintools/app/remove_ldap_user.py:449 lib/pp_admintools/app/remove_ldap_user.py:476
+#: lib/pp_admintools/app/remove_ldap_user.py:503 lib/pp_admintools/app/remove_ldap_user.py:534
+#: lib/pp_admintools/app/remove_ldap_user.py:565 lib/pp_admintools/app/remove_ldap_user.py:681
+#: lib/pp_admintools/app/set_ldap_password.py:518
 msgid "Changes:"
 msgstr ""
 
@@ -1334,8 +1334,8 @@ msgstr ""
 msgid "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) [{yes}/{no}]?"
 msgstr "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) [{yes}/{no}]?"
 
-#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:307
-#: lib/pp_admintools/app/set_ldap_password.py:492
+#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:308
+#: lib/pp_admintools/app/set_ldap_password.py:489
 msgid "yes"
 msgstr ""
 
@@ -1573,13 +1573,13 @@ msgstr ""
 msgid "Like {}"
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:115 lib/pp_admintools/app/set_ldap_password.py:207
+#: lib/pp_admintools/app/mk_ldap_passwd.py:115 lib/pp_admintools/app/set_ldap_password.py:208
 msgid ""
 "A possible salt to use on hashing the password. Caution: not all hashing schemes are supporting "
 "a salt."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:122 lib/pp_admintools/app/set_ldap_password.py:214
+#: lib/pp_admintools/app/mk_ldap_passwd.py:122 lib/pp_admintools/app/set_ldap_password.py:215
 msgid ""
 "The number of calculation rounds to use on hashing the password. Caution: not all hashing "
 "schemes are supporting calculation rounds."
@@ -1599,8 +1599,8 @@ msgstr "Got no password by {}."
 msgid "Password:"
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:179 lib/pp_admintools/app/set_ldap_password.py:307
-#: lib/pp_admintools/app/set_ldap_password.py:327
+#: lib/pp_admintools/app/mk_ldap_passwd.py:179 lib/pp_admintools/app/set_ldap_password.py:305
+#: lib/pp_admintools/app/set_ldap_password.py:325
 msgid "Repeat password:"
 msgstr ""
 
@@ -1608,7 +1608,7 @@ msgstr ""
 msgid "Encrypting password with hashing schema '{schema}' ..."
 msgstr "Encrypting password with hashing schema '{schema}' …"
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:200 lib/pp_admintools/app/set_ldap_password.py:481
+#: lib/pp_admintools/app/mk_ldap_passwd.py:200 lib/pp_admintools/app/set_ldap_password.py:478
 msgid "Used schema: {!r}."
 msgstr ""
 
@@ -1724,7 +1724,7 @@ msgstr ""
 msgid "Zone object:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:76
+#: lib/pp_admintools/app/remove_ldap_user.py:77
 msgid ""
 "Disables or removes the given users from LDAP. If disabling, then the user will not be really "
 "removed, but disabled by locking the password, setting all status flags to {inact!r}, assigning "
@@ -1732,368 +1732,372 @@ msgid ""
 "user will be really removed from LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:133
+#: lib/pp_admintools/app/remove_ldap_user.py:134
 msgid "Removing options"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:136
+#: lib/pp_admintools/app/remove_ldap_user.py:137
 msgid "This is the default."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:137
+#: lib/pp_admintools/app/remove_ldap_user.py:138
 msgid "This is mutually exclusive to {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:139
+#: lib/pp_admintools/app/remove_ldap_user.py:140
 msgid "Deactivating the user instead of removing it."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:146
+#: lib/pp_admintools/app/remove_ldap_user.py:147
 msgid "Removing the user from LDAP."
 msgstr "Removing the user from LDAP."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:153
+#: lib/pp_admintools/app/remove_ldap_user.py:154
 msgid "Don't remove all mail addresses of the users to remove from all mailing lists."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:161 lib/pp_admintools/app/set_ldap_password.py:200
-#: lib/pp_admintools/app/set_ldap_password.py:203
+#: lib/pp_admintools/app/remove_ldap_user.py:162 lib/pp_admintools/app/set_ldap_password.py:201
+#: lib/pp_admintools/app/set_ldap_password.py:204
 msgid "USER"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:162
+#: lib/pp_admintools/app/remove_ldap_user.py:163
 msgid ""
 "The user, which should be deactivated or removed. They may be given by their Uid (the "
 "alphanumeric POSIX name), their mail address or their LDAP DN (be aware, that this may be "
 "different in the particular LDAP instances)."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:183
+#: lib/pp_admintools/app/remove_ldap_user.py:184
 msgid "No users to remove given."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:201
+#: lib/pp_admintools/app/remove_ldap_user.py:202
 msgid "Checking given instances for admin and read/write access."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:208
+#: lib/pp_admintools/app/remove_ldap_user.py:209
 msgid "LDAP instance {!r} not found in configuration."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:216
+#: lib/pp_admintools/app/remove_ldap_user.py:217
 msgid "LDAP instance {!r} has only readonly access."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:221
+#: lib/pp_admintools/app/remove_ldap_user.py:222
 msgid "No admin access to LDAP instance {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:238
+#: lib/pp_admintools/app/remove_ldap_user.py:239
 msgid "All given users were not found in any LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:243
+#: lib/pp_admintools/app/remove_ldap_user.py:244
 msgid "Evaluated DNs to remove:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:252
+#: lib/pp_admintools/app/remove_ldap_user.py:253
 msgid "Start disabling user entries in:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:254
+#: lib/pp_admintools/app/remove_ldap_user.py:255
 msgid "Start removing user entries in:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:258
+#: lib/pp_admintools/app/remove_ldap_user.py:259
 msgid "Start disabling user entries ..."
 msgstr "Start disabling user entries …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:260
+#: lib/pp_admintools/app/remove_ldap_user.py:261
 msgid "Start removing user entries ..."
 msgstr "Start removing user entries …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:275
+#: lib/pp_admintools/app/remove_ldap_user.py:276
 msgid "Do you really want to deactivate the following users?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:277
+#: lib/pp_admintools/app/remove_ldap_user.py:278
 msgid "Do you really want to remove the following users?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:303
+#: lib/pp_admintools/app/remove_ldap_user.py:304
 msgid "Deactivate [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:305
+#: lib/pp_admintools/app/remove_ldap_user.py:306
 msgid "Remove [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:313
+#: lib/pp_admintools/app/remove_ldap_user.py:314
 msgid "Evaluating DNs of the user {!r} to remove ..."
 msgstr "Evaluating DNs of the user {!r} to remove …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:327 lib/pp_admintools/app/set_ldap_password.py:434
+#: lib/pp_admintools/app/remove_ldap_user.py:328 lib/pp_admintools/app/set_ldap_password.py:431
 msgid "Got DN {dn!r} for user {user!r} in LDAP instance {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:334 lib/pp_admintools/app/set_ldap_password.py:439
+#: lib/pp_admintools/app/remove_ldap_user.py:335 lib/pp_admintools/app/set_ldap_password.py:436
 msgid "Found {nr} entries for user {u!r} in LDAP instance {i}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:346 lib/pp_admintools/app/set_ldap_password.py:453
+#: lib/pp_admintools/app/remove_ldap_user.py:347 lib/pp_admintools/app/set_ldap_password.py:450
 msgid "Did not found user {user!r} in LDAP instance {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:355
+#: lib/pp_admintools/app/remove_ldap_user.py:356
 msgid "Deactivating all given users from {} ..."
 msgstr "Deactivating all given users from {} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:357
+#: lib/pp_admintools/app/remove_ldap_user.py:358
 msgid "Removing all given users from {} ..."
 msgstr "Removing all given users from {} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:372
+#: lib/pp_admintools/app/remove_ldap_user.py:373
 msgid "Deactivating user {dn!r} from {inst} ..."
 msgstr "Deactivating user {dn!r} from {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:375
+#: lib/pp_admintools/app/remove_ldap_user.py:376
 msgid "Removing user {dn!r} from {inst} ..."
 msgstr "Removing user {dn!r} from {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:381
+#: lib/pp_admintools/app/remove_ldap_user.py:382
 msgid "Attributes of {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:406
+#: lib/pp_admintools/app/remove_ldap_user.py:407
 msgid "{c} on removing user {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:412
+#: lib/pp_admintools/app/remove_ldap_user.py:413
 msgid "User {dn!r} successful deactivated on {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:415
+#: lib/pp_admintools/app/remove_ldap_user.py:416
 msgid "User {dn!r} successful removed from {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:441
+#: lib/pp_admintools/app/remove_ldap_user.py:442
 msgid "Updating user info for {dn!r} on {inst} ..."
 msgstr "Updating user info for {dn!r} on {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:446 lib/pp_admintools/app/set_ldap_password.py:519
+#: lib/pp_admintools/app/remove_ldap_user.py:447
 msgid "{c} on deactivating user {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:462
+#: lib/pp_admintools/app/remove_ldap_user.py:463
 msgid "Did not found any group memberships of {dn!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:468 lib/pp_admintools/app/remove_ldap_user.py:495
-#: lib/pp_admintools/app/remove_ldap_user.py:526 lib/pp_admintools/app/remove_ldap_user.py:557
+#: lib/pp_admintools/app/remove_ldap_user.py:469 lib/pp_admintools/app/remove_ldap_user.py:496
+#: lib/pp_admintools/app/remove_ldap_user.py:527 lib/pp_admintools/app/remove_ldap_user.py:558
 msgid "Removing user {u!r} from group {g!r} ..."
 msgstr "Removing user {u!r} from group {g!r} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:473 lib/pp_admintools/app/remove_ldap_user.py:500
-#: lib/pp_admintools/app/remove_ldap_user.py:531 lib/pp_admintools/app/remove_ldap_user.py:562
+#: lib/pp_admintools/app/remove_ldap_user.py:474 lib/pp_admintools/app/remove_ldap_user.py:501
+#: lib/pp_admintools/app/remove_ldap_user.py:532 lib/pp_admintools/app/remove_ldap_user.py:563
 msgid "{c} on removing user {dn!r} from group {g!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:489
+#: lib/pp_admintools/app/remove_ldap_user.py:490
 msgid "Did not found any unique group memberships of {dn!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:513
+#: lib/pp_admintools/app/remove_ldap_user.py:514
 msgid "Deleting user {uid!r} from all POSIX groups in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:520
+#: lib/pp_admintools/app/remove_ldap_user.py:521
 msgid "Did not found any POSIX group memberships of {uid!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:544
+#: lib/pp_admintools/app/remove_ldap_user.py:545
 msgid "Deleting user {uid!r} from all sudo groups in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:551
+#: lib/pp_admintools/app/remove_ldap_user.py:552
 msgid "Did not found any sudo group memberships of {uid!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:584
+#: lib/pp_admintools/app/remove_ldap_user.py:585
 msgid "No mail addresses found to remove for user {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:588
+#: lib/pp_admintools/app/remove_ldap_user.py:589
 msgid "Trying to remove the following mail addresses from mailing lists:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:608
+#: lib/pp_admintools/app/remove_ldap_user.py:609
 msgid "Ignoring mailing list {!r} ..."
 msgstr "Ignoring mailing list {!r} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:613
+#: lib/pp_admintools/app/remove_ldap_user.py:614
 msgid "Found DNs of mailing lists:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:618
+#: lib/pp_admintools/app/remove_ldap_user.py:619
 msgid "Did not found any mail groups including address {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:631
+#: lib/pp_admintools/app/remove_ldap_user.py:632
 msgid "Removing address {address!r} from mailing list {dn!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:670
+#: lib/pp_admintools/app/remove_ldap_user.py:671
 msgid "There are no changes for mail {mail!r} on {dn!r}?!?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:678
+#: lib/pp_admintools/app/remove_ldap_user.py:679
 msgid "{c} on removing mail {mail!r} from {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:90
+#: lib/pp_admintools/app/set_ldap_password.py:92
 msgid ""
 "Changing the password of the given user. If no user was given, then {app} tries to use the name "
 "of the user logged in on the controlling terminal."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:131
+#: lib/pp_admintools/app/set_ldap_password.py:132
 msgid "Use {} as the current user password."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:136
+#: lib/pp_admintools/app/set_ldap_password.py:137
 msgid ""
 "Prompt for current user password. This is used instead of specifying the password on the command"
 " line."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:144
+#: lib/pp_admintools/app/set_ldap_password.py:145
 msgid "Use contents of {} as the current user password."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:149
+#: lib/pp_admintools/app/set_ldap_password.py:150
 msgid "Use {} as the new user password. If not given, it will be asked for it."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:157
+#: lib/pp_admintools/app/set_ldap_password.py:158
 msgid "Do not check the quality of the new password with the {} library."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:172
+#: lib/pp_admintools/app/set_ldap_password.py:173
 msgid ""
 "The schema (hashing method) to use to hash the new password. It is possible to give here the "
 "value {val_list!r}, then all possible schemes are shown and exit. Default: {default!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:177
+#: lib/pp_admintools/app/set_ldap_password.py:178
 msgid "If you are not using an admin account, then the password will hashed only by the default schema."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:182
+#: lib/pp_admintools/app/set_ldap_password.py:183
 msgid "SCHEMA"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:186
+#: lib/pp_admintools/app/set_ldap_password.py:187
 msgid ""
 "The user, which password in the given LDAP instance should be changed. It may be given by its "
 "Uid (the alphanumeric POSIX name), its mail address or its LDAP DN."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:191
+#: lib/pp_admintools/app/set_ldap_password.py:192
 msgid "If not given, then your current user name {!r} will be used."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:194
+#: lib/pp_admintools/app/set_ldap_password.py:195
 msgid ""
 "If you are using a readonly LDAP instance or an instance w/o admin access, then you must provide"
 " somehow the current password of the user to change."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:263
+#: lib/pp_admintools/app/set_ldap_password.py:261
 msgid "Could not detect your current login name."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:268
+#: lib/pp_admintools/app/set_ldap_password.py:266
 msgid "The user {!r} will never be managed by LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:302
+#: lib/pp_admintools/app/set_ldap_password.py:300
 msgid "Using LDAP instance {inst!r} - {url}."
 msgstr "Using LDAP instance {inst!r} - {url}."
 
-#: lib/pp_admintools/app/set_ldap_password.py:306
+#: lib/pp_admintools/app/set_ldap_password.py:304
 msgid "Current password of user {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:320
+#: lib/pp_admintools/app/set_ldap_password.py:318
 msgid "Non admin users must use the default schema {!r} for hashing their password."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:326
+#: lib/pp_admintools/app/set_ldap_password.py:324
 msgid "New password of user {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:332
+#: lib/pp_admintools/app/set_ldap_password.py:330
 msgid "Checking the quality of the new password was disabled."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:362
+#: lib/pp_admintools/app/set_ldap_password.py:360
 msgid "Unbinding user connection from LDAP server {} ..."
 msgstr "Unbinding user connection from LDAP server {} …"
 
-#: lib/pp_admintools/app/set_ldap_password.py:373
+#: lib/pp_admintools/app/set_ldap_password.py:371
 msgid "Testing connect to LDAP-Server {url} with current user {dn!r} and password ..."
 msgstr "Testing connect to LDAP-Server {url} with current user {dn!r} and password …"
 
-#: lib/pp_admintools/app/set_ldap_password.py:385
+#: lib/pp_admintools/app/set_ldap_password.py:383
 msgid "Successful connected as {dn!r} to {url}."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:391
+#: lib/pp_admintools/app/set_ldap_password.py:389
 msgid "Could not connect to {url} as {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:402
+#: lib/pp_admintools/app/set_ldap_password.py:400
 msgid "Trying to get current password hash of user {!r} ..."
 msgstr "Trying to get current password hash of user {!r} …"
 
-#: lib/pp_admintools/app/set_ldap_password.py:441
+#: lib/pp_admintools/app/set_ldap_password.py:438
 msgid ""
 "Please use another username, or use the correct DN from the following list as a parameter for "
 "this script instead of the username:"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:458
+#: lib/pp_admintools/app/set_ldap_password.py:455
 msgid "Changing the password of user {dn!r} in LDAP instance {inst}."
 msgstr "Changing the password of user {dn!r} in LDAP instance {inst}."
 
-#: lib/pp_admintools/app/set_ldap_password.py:465
+#: lib/pp_admintools/app/set_ldap_password.py:462
 msgid "Setting password of '{dn}' with hashing schema '{schema}' ..."
 msgstr "Setting password of '{dn}' with hashing schema '{schema}' …"
 
-#: lib/pp_admintools/app/set_ldap_password.py:471
+#: lib/pp_admintools/app/set_ldap_password.py:468
 msgid "Current password hash: '{}'."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:474
+#: lib/pp_admintools/app/set_ldap_password.py:471
 msgid "The user '{}' has currently no password."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:487
+#: lib/pp_admintools/app/set_ldap_password.py:484
 msgid "New password hash: '{}'."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:491
+#: lib/pp_admintools/app/set_ldap_password.py:488
 msgid "Apply new password? [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:497
+#: lib/pp_admintools/app/set_ldap_password.py:494
 msgid "Do not setting password for {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:513
+#: lib/pp_admintools/app/set_ldap_password.py:510
 msgid "Setting password ..."
 msgstr "Setting password …"
 
+#: lib/pp_admintools/app/set_ldap_password.py:516
+msgid "{c} on setting password of user {dn!r}: {e}"
+msgstr ""
+
 #: lib/pp_admintools/argparse_actions.py:45
 msgid "Value {v!r} for a {what} port is invalid:"
 msgstr ""
index 588124672389e9e79fbd47cce49b3982bd43cc69..2b9a0ceb156419cb2d272913d102297a02cb1cf8 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pp_admintools 0.9.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-06-12 16:57+0200\n"
+"POT-Creation-Date: 2023-06-13 13:45+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <frank.brehm@pixelpark.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -426,7 +426,7 @@ msgid "Generation of the BIND9 configuration file for slave zones."
 msgstr ""
 
 #: lib/pp_admintools/app/dns_deploy_zones.py:250 lib/pp_admintools/app/mk_ldap_passwd.py:86
-#: lib/pp_admintools/app/set_ldap_password.py:124
+#: lib/pp_admintools/app/set_ldap_password.py:125
 msgid "Options for {}"
 msgstr ""
 
@@ -770,7 +770,7 @@ msgid "Options fo LDAP connections"
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:238
-#: lib/pp_admintools/app/remove_ldap_user.py:307 lib/pp_admintools/app/set_ldap_password.py:492
+#: lib/pp_admintools/app/remove_ldap_user.py:308 lib/pp_admintools/app/set_ldap_password.py:489
 msgid "No"
 msgstr ""
 
@@ -808,8 +808,8 @@ msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}"
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:379 lib/pp_admintools/app/mk_ldap_passwd.py:131
-#: lib/pp_admintools/app/set_ldap_password.py:130 lib/pp_admintools/app/set_ldap_password.py:131
-#: lib/pp_admintools/app/set_ldap_password.py:148 lib/pp_admintools/app/set_ldap_password.py:151
+#: lib/pp_admintools/app/set_ldap_password.py:131 lib/pp_admintools/app/set_ldap_password.py:132
+#: lib/pp_admintools/app/set_ldap_password.py:149 lib/pp_admintools/app/set_ldap_password.py:152
 msgid "PASSWORD"
 msgstr ""
 
@@ -823,8 +823,8 @@ msgid ""
 "command line."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:391 lib/pp_admintools/app/set_ldap_password.py:142
-#: lib/pp_admintools/app/set_ldap_password.py:144
+#: lib/pp_admintools/app/ldap.py:391 lib/pp_admintools/app/set_ldap_password.py:143
+#: lib/pp_admintools/app/set_ldap_password.py:145
 msgid "PASSWORD_FILE"
 msgstr ""
 
@@ -994,7 +994,7 @@ msgstr ""
 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:971 lib/pp_admintools/app/remove_ldap_user.py:317
+#: lib/pp_admintools/app/ldap.py:971 lib/pp_admintools/app/remove_ldap_user.py:318
 msgid "Empty user given."
 msgstr ""
 
@@ -1033,7 +1033,7 @@ msgstr ""
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1149 lib/pp_admintools/app/set_ldap_password.py:411
+#: lib/pp_admintools/app/ldap.py:1149 lib/pp_admintools/app/set_ldap_password.py:409
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr ""
 
@@ -1098,10 +1098,10 @@ msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:1325 lib/pp_admintools/app/ldap.py:1344
-#: lib/pp_admintools/app/remove_ldap_user.py:448 lib/pp_admintools/app/remove_ldap_user.py:475
-#: lib/pp_admintools/app/remove_ldap_user.py:502 lib/pp_admintools/app/remove_ldap_user.py:533
-#: lib/pp_admintools/app/remove_ldap_user.py:564 lib/pp_admintools/app/remove_ldap_user.py:680
-#: lib/pp_admintools/app/set_ldap_password.py:521
+#: lib/pp_admintools/app/remove_ldap_user.py:449 lib/pp_admintools/app/remove_ldap_user.py:476
+#: lib/pp_admintools/app/remove_ldap_user.py:503 lib/pp_admintools/app/remove_ldap_user.py:534
+#: lib/pp_admintools/app/remove_ldap_user.py:565 lib/pp_admintools/app/remove_ldap_user.py:681
+#: lib/pp_admintools/app/set_ldap_password.py:518
 msgid "Changes:"
 msgstr ""
 
@@ -1333,8 +1333,8 @@ msgstr ""
 msgid "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:307
-#: lib/pp_admintools/app/set_ldap_password.py:492
+#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:308
+#: lib/pp_admintools/app/set_ldap_password.py:489
 msgid "yes"
 msgstr ""
 
@@ -1572,13 +1572,13 @@ msgstr ""
 msgid "Like {}"
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:115 lib/pp_admintools/app/set_ldap_password.py:207
+#: lib/pp_admintools/app/mk_ldap_passwd.py:115 lib/pp_admintools/app/set_ldap_password.py:208
 msgid ""
 "A possible salt to use on hashing the password. Caution: not all hashing schemes are supporting "
 "a salt."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:122 lib/pp_admintools/app/set_ldap_password.py:214
+#: lib/pp_admintools/app/mk_ldap_passwd.py:122 lib/pp_admintools/app/set_ldap_password.py:215
 msgid ""
 "The number of calculation rounds to use on hashing the password. Caution: not all hashing "
 "schemes are supporting calculation rounds."
@@ -1598,8 +1598,8 @@ msgstr ""
 msgid "Password:"
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:179 lib/pp_admintools/app/set_ldap_password.py:307
-#: lib/pp_admintools/app/set_ldap_password.py:327
+#: lib/pp_admintools/app/mk_ldap_passwd.py:179 lib/pp_admintools/app/set_ldap_password.py:305
+#: lib/pp_admintools/app/set_ldap_password.py:325
 msgid "Repeat password:"
 msgstr ""
 
@@ -1607,7 +1607,7 @@ msgstr ""
 msgid "Encrypting password with hashing schema '{schema}' ..."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:200 lib/pp_admintools/app/set_ldap_password.py:481
+#: lib/pp_admintools/app/mk_ldap_passwd.py:200 lib/pp_admintools/app/set_ldap_password.py:478
 msgid "Used schema: {!r}."
 msgstr ""
 
@@ -1723,7 +1723,7 @@ msgstr ""
 msgid "Zone object:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:76
+#: lib/pp_admintools/app/remove_ldap_user.py:77
 msgid ""
 "Disables or removes the given users from LDAP. If disabling, then the user will not be really "
 "removed, but disabled by locking the password, setting all status flags to {inact!r}, assigning "
@@ -1731,368 +1731,372 @@ msgid ""
 "user will be really removed from LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:133
+#: lib/pp_admintools/app/remove_ldap_user.py:134
 msgid "Removing options"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:136
+#: lib/pp_admintools/app/remove_ldap_user.py:137
 msgid "This is the default."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:137
+#: lib/pp_admintools/app/remove_ldap_user.py:138
 msgid "This is mutually exclusive to {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:139
+#: lib/pp_admintools/app/remove_ldap_user.py:140
 msgid "Deactivating the user instead of removing it."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:146
+#: lib/pp_admintools/app/remove_ldap_user.py:147
 msgid "Removing the user from LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:153
+#: lib/pp_admintools/app/remove_ldap_user.py:154
 msgid "Don't remove all mail addresses of the users to remove from all mailing lists."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:161 lib/pp_admintools/app/set_ldap_password.py:200
-#: lib/pp_admintools/app/set_ldap_password.py:203
+#: lib/pp_admintools/app/remove_ldap_user.py:162 lib/pp_admintools/app/set_ldap_password.py:201
+#: lib/pp_admintools/app/set_ldap_password.py:204
 msgid "USER"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:162
+#: lib/pp_admintools/app/remove_ldap_user.py:163
 msgid ""
 "The user, which should be deactivated or removed. They may be given by their Uid (the "
 "alphanumeric POSIX name), their mail address or their LDAP DN (be aware, that this may be "
 "different in the particular LDAP instances)."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:183
+#: lib/pp_admintools/app/remove_ldap_user.py:184
 msgid "No users to remove given."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:201
+#: lib/pp_admintools/app/remove_ldap_user.py:202
 msgid "Checking given instances for admin and read/write access."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:208
+#: lib/pp_admintools/app/remove_ldap_user.py:209
 msgid "LDAP instance {!r} not found in configuration."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:216
+#: lib/pp_admintools/app/remove_ldap_user.py:217
 msgid "LDAP instance {!r} has only readonly access."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:221
+#: lib/pp_admintools/app/remove_ldap_user.py:222
 msgid "No admin access to LDAP instance {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:238
+#: lib/pp_admintools/app/remove_ldap_user.py:239
 msgid "All given users were not found in any LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:243
+#: lib/pp_admintools/app/remove_ldap_user.py:244
 msgid "Evaluated DNs to remove:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:252
+#: lib/pp_admintools/app/remove_ldap_user.py:253
 msgid "Start disabling user entries in:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:254
+#: lib/pp_admintools/app/remove_ldap_user.py:255
 msgid "Start removing user entries in:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:258
+#: lib/pp_admintools/app/remove_ldap_user.py:259
 msgid "Start disabling user entries ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:260
+#: lib/pp_admintools/app/remove_ldap_user.py:261
 msgid "Start removing user entries ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:275
+#: lib/pp_admintools/app/remove_ldap_user.py:276
 msgid "Do you really want to deactivate the following users?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:277
+#: lib/pp_admintools/app/remove_ldap_user.py:278
 msgid "Do you really want to remove the following users?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:303
+#: lib/pp_admintools/app/remove_ldap_user.py:304
 msgid "Deactivate [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:305
+#: lib/pp_admintools/app/remove_ldap_user.py:306
 msgid "Remove [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:313
+#: lib/pp_admintools/app/remove_ldap_user.py:314
 msgid "Evaluating DNs of the user {!r} to remove ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:327 lib/pp_admintools/app/set_ldap_password.py:434
+#: lib/pp_admintools/app/remove_ldap_user.py:328 lib/pp_admintools/app/set_ldap_password.py:431
 msgid "Got DN {dn!r} for user {user!r} in LDAP instance {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:334 lib/pp_admintools/app/set_ldap_password.py:439
+#: lib/pp_admintools/app/remove_ldap_user.py:335 lib/pp_admintools/app/set_ldap_password.py:436
 msgid "Found {nr} entries for user {u!r} in LDAP instance {i}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:346 lib/pp_admintools/app/set_ldap_password.py:453
+#: lib/pp_admintools/app/remove_ldap_user.py:347 lib/pp_admintools/app/set_ldap_password.py:450
 msgid "Did not found user {user!r} in LDAP instance {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:355
+#: lib/pp_admintools/app/remove_ldap_user.py:356
 msgid "Deactivating all given users from {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:357
+#: lib/pp_admintools/app/remove_ldap_user.py:358
 msgid "Removing all given users from {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:372
+#: lib/pp_admintools/app/remove_ldap_user.py:373
 msgid "Deactivating user {dn!r} from {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:375
+#: lib/pp_admintools/app/remove_ldap_user.py:376
 msgid "Removing user {dn!r} from {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:381
+#: lib/pp_admintools/app/remove_ldap_user.py:382
 msgid "Attributes of {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:406
+#: lib/pp_admintools/app/remove_ldap_user.py:407
 msgid "{c} on removing user {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:412
+#: lib/pp_admintools/app/remove_ldap_user.py:413
 msgid "User {dn!r} successful deactivated on {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:415
+#: lib/pp_admintools/app/remove_ldap_user.py:416
 msgid "User {dn!r} successful removed from {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:441
+#: lib/pp_admintools/app/remove_ldap_user.py:442
 msgid "Updating user info for {dn!r} on {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:446 lib/pp_admintools/app/set_ldap_password.py:519
+#: lib/pp_admintools/app/remove_ldap_user.py:447
 msgid "{c} on deactivating user {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:462
+#: lib/pp_admintools/app/remove_ldap_user.py:463
 msgid "Did not found any group memberships of {dn!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:468 lib/pp_admintools/app/remove_ldap_user.py:495
-#: lib/pp_admintools/app/remove_ldap_user.py:526 lib/pp_admintools/app/remove_ldap_user.py:557
+#: lib/pp_admintools/app/remove_ldap_user.py:469 lib/pp_admintools/app/remove_ldap_user.py:496
+#: lib/pp_admintools/app/remove_ldap_user.py:527 lib/pp_admintools/app/remove_ldap_user.py:558
 msgid "Removing user {u!r} from group {g!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:473 lib/pp_admintools/app/remove_ldap_user.py:500
-#: lib/pp_admintools/app/remove_ldap_user.py:531 lib/pp_admintools/app/remove_ldap_user.py:562
+#: lib/pp_admintools/app/remove_ldap_user.py:474 lib/pp_admintools/app/remove_ldap_user.py:501
+#: lib/pp_admintools/app/remove_ldap_user.py:532 lib/pp_admintools/app/remove_ldap_user.py:563
 msgid "{c} on removing user {dn!r} from group {g!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:489
+#: lib/pp_admintools/app/remove_ldap_user.py:490
 msgid "Did not found any unique group memberships of {dn!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:513
+#: lib/pp_admintools/app/remove_ldap_user.py:514
 msgid "Deleting user {uid!r} from all POSIX groups in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:520
+#: lib/pp_admintools/app/remove_ldap_user.py:521
 msgid "Did not found any POSIX group memberships of {uid!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:544
+#: lib/pp_admintools/app/remove_ldap_user.py:545
 msgid "Deleting user {uid!r} from all sudo groups in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:551
+#: lib/pp_admintools/app/remove_ldap_user.py:552
 msgid "Did not found any sudo group memberships of {uid!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:584
+#: lib/pp_admintools/app/remove_ldap_user.py:585
 msgid "No mail addresses found to remove for user {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:588
+#: lib/pp_admintools/app/remove_ldap_user.py:589
 msgid "Trying to remove the following mail addresses from mailing lists:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:608
+#: lib/pp_admintools/app/remove_ldap_user.py:609
 msgid "Ignoring mailing list {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:613
+#: lib/pp_admintools/app/remove_ldap_user.py:614
 msgid "Found DNs of mailing lists:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:618
+#: lib/pp_admintools/app/remove_ldap_user.py:619
 msgid "Did not found any mail groups including address {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:631
+#: lib/pp_admintools/app/remove_ldap_user.py:632
 msgid "Removing address {address!r} from mailing list {dn!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:670
+#: lib/pp_admintools/app/remove_ldap_user.py:671
 msgid "There are no changes for mail {mail!r} on {dn!r}?!?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:678
+#: lib/pp_admintools/app/remove_ldap_user.py:679
 msgid "{c} on removing mail {mail!r} from {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:90
+#: lib/pp_admintools/app/set_ldap_password.py:92
 msgid ""
 "Changing the password of the given user. If no user was given, then {app} tries to use the name "
 "of the user logged in on the controlling terminal."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:131
+#: lib/pp_admintools/app/set_ldap_password.py:132
 msgid "Use {} as the current user password."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:136
+#: lib/pp_admintools/app/set_ldap_password.py:137
 msgid ""
 "Prompt for current user password. This is used instead of specifying the password on the command"
 " line."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:144
+#: lib/pp_admintools/app/set_ldap_password.py:145
 msgid "Use contents of {} as the current user password."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:149
+#: lib/pp_admintools/app/set_ldap_password.py:150
 msgid "Use {} as the new user password. If not given, it will be asked for it."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:157
+#: lib/pp_admintools/app/set_ldap_password.py:158
 msgid "Do not check the quality of the new password with the {} library."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:172
+#: lib/pp_admintools/app/set_ldap_password.py:173
 msgid ""
 "The schema (hashing method) to use to hash the new password. It is possible to give here the "
 "value {val_list!r}, then all possible schemes are shown and exit. Default: {default!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:177
+#: lib/pp_admintools/app/set_ldap_password.py:178
 msgid "If you are not using an admin account, then the password will hashed only by the default schema."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:182
+#: lib/pp_admintools/app/set_ldap_password.py:183
 msgid "SCHEMA"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:186
+#: lib/pp_admintools/app/set_ldap_password.py:187
 msgid ""
 "The user, which password in the given LDAP instance should be changed. It may be given by its "
 "Uid (the alphanumeric POSIX name), its mail address or its LDAP DN."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:191
+#: lib/pp_admintools/app/set_ldap_password.py:192
 msgid "If not given, then your current user name {!r} will be used."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:194
+#: lib/pp_admintools/app/set_ldap_password.py:195
 msgid ""
 "If you are using a readonly LDAP instance or an instance w/o admin access, then you must provide"
 " somehow the current password of the user to change."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:263
+#: lib/pp_admintools/app/set_ldap_password.py:261
 msgid "Could not detect your current login name."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:268
+#: lib/pp_admintools/app/set_ldap_password.py:266
 msgid "The user {!r} will never be managed by LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:302
+#: lib/pp_admintools/app/set_ldap_password.py:300
 msgid "Using LDAP instance {inst!r} - {url}."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:306
+#: lib/pp_admintools/app/set_ldap_password.py:304
 msgid "Current password of user {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:320
+#: lib/pp_admintools/app/set_ldap_password.py:318
 msgid "Non admin users must use the default schema {!r} for hashing their password."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:326
+#: lib/pp_admintools/app/set_ldap_password.py:324
 msgid "New password of user {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:332
+#: lib/pp_admintools/app/set_ldap_password.py:330
 msgid "Checking the quality of the new password was disabled."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:362
+#: lib/pp_admintools/app/set_ldap_password.py:360
 msgid "Unbinding user connection from LDAP server {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:373
+#: lib/pp_admintools/app/set_ldap_password.py:371
 msgid "Testing connect to LDAP-Server {url} with current user {dn!r} and password ..."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:385
+#: lib/pp_admintools/app/set_ldap_password.py:383
 msgid "Successful connected as {dn!r} to {url}."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:391
+#: lib/pp_admintools/app/set_ldap_password.py:389
 msgid "Could not connect to {url} as {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:402
+#: lib/pp_admintools/app/set_ldap_password.py:400
 msgid "Trying to get current password hash of user {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:441
+#: lib/pp_admintools/app/set_ldap_password.py:438
 msgid ""
 "Please use another username, or use the correct DN from the following list as a parameter for "
 "this script instead of the username:"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:458
+#: lib/pp_admintools/app/set_ldap_password.py:455
 msgid "Changing the password of user {dn!r} in LDAP instance {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:465
+#: lib/pp_admintools/app/set_ldap_password.py:462
 msgid "Setting password of '{dn}' with hashing schema '{schema}' ..."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:471
+#: lib/pp_admintools/app/set_ldap_password.py:468
 msgid "Current password hash: '{}'."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:474
+#: lib/pp_admintools/app/set_ldap_password.py:471
 msgid "The user '{}' has currently no password."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:487
+#: lib/pp_admintools/app/set_ldap_password.py:484
 msgid "New password hash: '{}'."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:491
+#: lib/pp_admintools/app/set_ldap_password.py:488
 msgid "Apply new password? [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:497
+#: lib/pp_admintools/app/set_ldap_password.py:494
 msgid "Do not setting password for {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/set_ldap_password.py:513
+#: lib/pp_admintools/app/set_ldap_password.py:510
 msgid "Setting password ..."
 msgstr ""
 
+#: lib/pp_admintools/app/set_ldap_password.py:516
+msgid "{c} on setting password of user {dn!r}: {e}"
+msgstr ""
+
 #: lib/pp_admintools/argparse_actions.py:45
 msgid "Value {v!r} for a {what} port is invalid:"
 msgstr ""