Python: How do I set the password on an ubuntu user account using Fabric
I'm trying to create a user account on a remote Ubuntu system using Fabric. I want the account to have a strong password. I can use the following to create the account:
sudo('useradd -m test -s /bin/bash')
The problem is I'm not开发者_运维知识库 sure how to set the password. The useradd -p options requires an encrypted password. How do I set the password? How does the salt get passed to the remote system?
Example code would be appreciated.
Thanks
Try chpasswd
. Unlike passwd
, you can pass the username and password in the command's standard input. So you can for example upload a file containing the password and put this line in your fabfile:
sudo('chpasswd < my_password_file')
From man chpasswd
:
The chpasswd command reads a list of user name and password pairs from standard input and uses this information to update a group of existing users. Each line is of the format:
user_name:password
The supplied passwords must be in clear-text.
I do it like this:
sudo('useradd %s' % username)
sudo('echo %s | passwd %s --stdin' % (username, username))
sudo('chage -d 0 %s' % username)
The password will match the username and the user will be prompted to change their password at first login.
精彩评论