# Copyright (c) 2025 Kim Jarvis TPF Software Services S.A. kim.jarvis@tpfsystems.com # This software is licensed under the MIT License. See the LICENSE file for details.#
[docs]classUsermod:""" A class to encapsulate the functionality of adding a user password in Unix-like operating systems. It allows creating a new user account with specified password and privilege options. Attributes: user (str): The username to be created. password (str): The password for the new user account. sudo (bool): If `True`, the user will be created with `sudo` privileges. su (bool): If `True`, the user will be created with `su` privileges. **Examples:** .. code:: python yield Usermod(user="john", password="secret123") Usage: This class is designed to be used in a generator-based workflow where user creation commands are yielded for execution on remote hosts. Notes: - Privilege escalation (sudo/su) is handled based on the respective flags. """def__init__(self,user:str=None,password:str=None,sudo:bool=False,su:bool=False):self.user=userself.password=passwordself.sudo=sudoself.su=sudef__repr__(self):return(f"Usermod("f"user={self.user!r}, "f"password={self.password!r}, "f"sudo={self.sudo!r}, "f"su={self.su!r})")defexecute(self):fromreemote.operations.server.shellimportShellr=yieldShell(f"mkpasswd -m sha-512 {self.password}",sudo=self.sudo,su=self.su)password=r.cp.stdout.rstrip('\n')yieldShell(f"usermod --password '{password}' {self.user}",sudo=self.sudo,su=self.su)