我正在使用此 Fabric 函数尝试将用户添加到 Ubuntu 服务器。它没有抛出错误,但在脚本完成后,我无法使用我尝试添加的用户登录。如果我手动添加用户,则在运行命令后adduser myusername
,系统会提示我输入密码两次。在此脚本中,重复提示(我称之为)通过将密码两次传递给此 echo 命令来处理(我认为无效)
if not sudo("adduser %s | echo -e '%s\n%s\n'" % (new_user,passwd,passwd)).failed:
您能解释一下如何在该功能中更恰当地处理该问题吗?
def user_add(new_user, passwd=False):
"""Add new user"""
with settings(hide('running', 'stdout', 'stderr'), warn_only=True):
# if is_host_up(env.host):
if not passwd:
passwd = generate_passwd()
if not sudo("adduser %s | echo -e '%s\n%s\n'" % (new_user,passwd,passwd)).failed:
run('echo "{user} ALL=(ALL:ALL) ALL" >> /etc/sudoers'.format(user=new_user))
...other code not included
答案1
adduser
只是 Debian/Ubuntu 专用的更普通命令的前端useradd
,它在命令行上接受各种选项,包括预哈希密码作为其-p
选项。为此,您可能应该useradd
使用所需选项而不是 来调用adduser
。
在大多数其他 Linux 发行版中,adduser
只是符号链接到useradd
,或者完全不存在。