Ответ на запрос двойного пароля с помощью 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или отсутствует полностью.

Другие вопросы по тегам