использование функции скрипта вместо ввода с клавиатуры

Я пишу сценарий оболочки, чтобы изменить пароль пользователя. Я попытался использовать команду passwd , но эта команда всегда запрашивает ввод старых и новых паролей; он не примет их из моего сценария.

Есть ли способ изменить пароль пользователя в сценарии оболочки, причем старый и новый пароль поступают, например, из переменных?

 #!/usr/bin/expect -f spawn passwd username expect "New password:" send -- "user-password\r" expect "Retype new password:" send -- "user-password\r" expect eof 

тестирование

Я сохранил его как script.exp и когда я запускаю скрипт, это результат, который я получаю на своей машине.

 expect script.exp spawn passwd ramesh Changing password for user ramesh. New password: Retype new password: passwd: all authentication tokens updated successfully. 

Мне не пришлось вводить пароль с помощью клавиатуры. Конечно, вы можете изменить функцию, чтобы она соответствовала вашим требованиям и использовала ее так, как вы хотите.