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

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

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

  • Сервер VNC без системы X Window
  • Доступ к Linux-серверу с компьютера Windows в графическом режиме через SSH
  • Как GDM аутентифицируется на X-сервере?
  • Передача X с монитора на удаленную машину
  • (X) буфер копирования / вставки, перезаписанный Firefox автозаполнением / автозагрузкой
  • Каковы происхождение rgb.txt?
  • Сессия VMD X11 по ssh
  • Какой сигнал отправляет X своим клиентам, когда он получает SIGINT?
  • One Solution collect form web for “использование функции скрипта вместо ввода с клавиатуры”

     #!/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. 

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

    Linux и Unix - лучшая ОС в мире.