Міняємо пароль користувачу з bash скрипта (або просто командою з шелла)

Зараз на кита знайшли відмінний спосіб змінити пароль користувачу з шелла (а значить і з скрипта). Загалом, хто стикався з цією проблемою - зрозуміють мене.

# Echo "username: password" | chpasswd

Такий спосіб теж підходить, але не є універсальним. Наприклад, у FreeBSD утиліти chpasswd немає.
EOUPD

Змінимо пароль руту на megapassword (запуск від рута):
root @ host:

# Echo -e "megapassword \ nmegapassword \ n" | passwd
Змінимо пароль користувачу 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, в якій потрібно вказати старий пароль. Чого я в общем-то вам не раджу.

Ну і щоб не було питань про те, що відбувається:

$ Echo -e "oldpassword \ nmegapassword \ nmegapassword \ n"
oldpassword
megapassword
megapassword

Тобто ми на STDIN passwd скармливаем STDOUT echo. А echo і «тисне enter»