diff --git a/addons/hw_drivers/tools/helpers.py b/addons/hw_drivers/tools/helpers.py index 328da8b0af2..8c68ea7a478 100644 --- a/addons/hw_drivers/tools/helpers.py +++ b/addons/hw_drivers/tools/helpers.py @@ -199,13 +199,15 @@ def generate_password(): """ alphabet = 'abcdefghijkmnpqrstuvwxyz23456789' password = ''.join(secrets.choice(alphabet) for i in range(12)) - shadow_password = crypt.crypt(password, crypt.mksalt()) - subprocess.call(('sudo', 'usermod', '-p', shadow_password, 'pi')) - - with writable(): - subprocess.call(('sudo', 'cp', '/etc/shadow', '/root_bypass_ramdisks/etc/shadow')) - - return password + try: + shadow_password = crypt.crypt(password, crypt.mksalt()) + subprocess.run(('sudo', 'usermod', '-p', shadow_password, 'pi'), check=True) + with writable(): + subprocess.run(('sudo', 'cp', '/etc/shadow', '/root_bypass_ramdisks/etc/shadow'), check=True) + return password + except subprocess.CalledProcessError as e: + _logger.error("Failed to generate password: %s", e.output) + return 'Error: Check IoT log' def get_certificate_status(is_first=True):