Меняем пароль пользователю из bash скрипта (или просто командой из шелла).
Сейчас на КИТе нашли отличный способ сменить пароль пользователю из шелла (а значит и из скрипта). В общем, кто сталкивался с этой проблемой — поймут меня. UPD: в комментариях указали другой способ смены пароля от рута:
root@host:~# echo "username:password" | chpasswd
Такой способ тоже подходит, но не является универсальным. Например, во FreeBSD утилиты chpasswd нет.
EOUPD
Суть такая: Сменим пароль руту на megapassword (запуск от рута):
root@host:~# echo -e "megapassword\nmegapassword\n" | passwd
Рабочий пример:
#!/bin/bash newpass="newpassword\n" echo -e $newpass$newpass| passwd -q username 2>/dev/null;
Сменим пароль пользователю username (запуск от рута)
root@host:~# echo -e "megapassword\nmegapassword\n" | passwd username
Для того, что бы было понятнее, покажу что в кавычках с пробелами: «megassword \n megapassword \n», где megapassword — новый пароль, а \n — «нажатие» клавиши enter (а точнее — перенос строки) Сменим пароль пользователю username при запуске от username:
username:~$ echo -e "oldpassword\nmegapassword\nmegapassword\n" | passwd
Здесь добавляется третья строка в выводе echo, в которой нужно указать старый пароль. Чего я в общем-то вам не советую. Ну и чтобы не было вопросов о том, что происходит:
inky@laptop1:~$ echo -e "oldpassword\nmegapassword\nmegapassword\n" oldpassword megapassword megapassword
То есть мы на STDIN passwd скармливаем STDOUT echo. А echo и «жмет enter»