使用 Fabric 响应双重密码提示

使用 Fabric 响应双重密码提示

我正在使用此 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,或者完全不存在。

相关内容