LINUX.ORG.RU
ФорумAdmin

Автоматический ввод пароля для pure-ftpd через bash

 ,


0

2

Всем привет, требуется автоматизировать процесс при создании виртуальных юзеров для pure-ftpd через bash. Написал команду:echo «$PASSWORD\n$PASSWORD\n» | pure-pw passwd user. Пароль в виде переменной подставляется. Но при запуске скрипта все равно заставляет писать 2 раза пароль. Почему так может быть? Cпасибо!

Данной командой вы подаете пароль на stdin программы, она точно умеет читать из него пароль?

Лучше какой-ниубдь expect для таких целей использовать или посмотреть, может программа может работать в неинтерактивном режиме (читать пароль из stdin, принимать как аргумент или что-то подобное).

alozovskoy ★★★★★ ()

Возможно, программа читает не stdin. К примеру, sudo работает с /dev/tty. Это причина. Решения пока не придумал. Нормальное перенаправление тут не сработает.

evilface ★★ ()
Ответ на: комментарий от evilface

Не уточнил, если команду из консоли самому сделать, то срабатывает. Тогда теперь попробую ваши идеи.

Matisse ()

Но при запуске скрипта все равно заставляет писать 2 раза пароль. Почему так может быть?

Потому, что данные на вход поступают раньше, чем команда ожидает их читать. А для паролей хорошей практикой является очистка входного буфера перед вводом.

Решение:
man expect

Kroz ★★★★★ ()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от Kroz

Это нужно быть сильным извращенцем, чтобы написать такую программу.

src/sudo.c, line 483:

    fd = open(_PATH_TTY, O_RDWR|O_NOCTTY|O_NONBLOCK, 0);

pathnames.h.in, lines 38-40:

#ifndef _PATH_TTY
# define _PATH_TTY		"/dev/tty"
#endif /* _PATH_TTY */

evilface ★★ ()
Последнее исправление: evilface (всего исправлений: 3)

Предлагаю разобраться где пурефтпд хранит хэши паролей и редактировать их там.

Bers666 ★★★★★ ()

До хеша пароля я еще дойду, пока мне достаточно expect'a. А так всем спасибо!

Matisse ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.