D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
saltstack
/
salt
/
lib
/
python3.10
/
site-packages
/
salt
/
modules
/
Filename :
aix_shadow.py
back
Copy
""" Manage account locks on AIX systems .. versionadded:: 2018.3.0 :depends: none """ # Import python librarie import logging log = logging.getLogger(__name__) # Define the module's virtual name __virtualname__ = "shadow" def __virtual__(): """ Only load if kernel is AIX """ if __grains__["kernel"] == "AIX": return __virtualname__ return ( False, "The aix_shadow execution module failed to load: " "only available on AIX systems.", ) def login_failures(user): """ Query for all accounts which have 3 or more login failures. CLI Example: .. code-block:: bash salt <minion_id> shadow.login_failures ALL """ cmd = "lsuser -a unsuccessful_login_count {}".format(user) cmd += " | grep -E 'unsuccessful_login_count=([3-9]|[0-9][0-9]+)'" out = __salt__["cmd.run_all"](cmd, output_loglevel="trace", python_shell=True) ret = [] lines = out["stdout"].splitlines() for line in lines: ret.append(line.split()[0]) return ret def locked(user): """ Query for all accounts which are flagged as locked. CLI Example: .. code-block:: bash salt <minion_id> shadow.locked ALL """ cmd = "lsuser -a account_locked {}".format(user) cmd += ' | grep "account_locked=true"' out = __salt__["cmd.run_all"](cmd, output_loglevel="trace", python_shell=True) ret = [] lines = out["stdout"].splitlines() for line in lines: ret.append(line.split()[0]) return ret def unlock(user): """ Unlock user for locked account CLI Example: .. code-block:: bash salt <minion_id> shadow.unlock user """ cmd = ( "chuser account_locked=false {0} | " 'chsec -f /etc/security/lastlog -a "unsuccessful_login_count=0" -s {0}'.format( user ) ) ret = __salt__["cmd.run_all"](cmd, output_loglevel="trace", python_shell=True) return ret