Split set_root_password_in_rootfs() in two functions to make the code for setting password hash in the content of shadow file reusable. --- src/virtBootstrap/utils.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/virtBootstrap/utils.py b/src/virtBootstrap/utils.py index 36341cd..7bcffa4 100644 --- a/src/virtBootstrap/utils.py +++ b/src/virtBootstrap/utils.py @@ -408,6 +408,19 @@ def str2float(element): return None +def set_password_in_shadow_content(shadow_content, password, user='root'): + """ + Find a user the content of shadow file and set a hash of the password. + """ + for index, line in enumerate(shadow_content): + if line.startswith(user): + line_split = line.split(':') + line_split[1] = passlib.hosts.linux_context.hash(password) + shadow_content[index] = ':'.join(line_split) + break + return shadow_content + + def set_root_password_in_rootfs(rootfs, password): """ Set password on the root user within root filesystem @@ -421,15 +434,10 @@ def set_root_password_in_rootfs(rootfs, password): with open(shadow_file) as orig_file: shadow_content = orig_file.read().split('\n') - for index, line in enumerate(shadow_content): - if line.startswith('root'): - line_split = line.split(':') - line_split[1] = passlib.hosts.linux_context.hash(password) - shadow_content[index] = ':'.join(line_split) - break + new_content = set_password_in_shadow_content(shadow_content, password) with open(shadow_file, "w") as new_file: - new_file.write('\n'.join(shadow_content)) + new_file.write('\n'.join(new_content)) except Exception: raise -- 2.13.3 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list