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