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

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

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

  • Bash Parameter Substitution: командная строка против скрипта
  • Есть ли элегантный способ установить переменную оболочки в содержимое файла?
  • Пытаться направить содержимое переменной в команду дает Ambigious Redirect
  • Как исправить unix, чтобы я мог использовать клавиши со стрелками в терминале?
  • Удалить форматирование из буфера копирования / вставки
  • Приложение, которое позволяет отображать содержимое буфера обмена и его тип MIME?
  • Пространства для переменных в сценарии bash
  • файл хвоста с удаленного сервера и nslookup на локальном
  • Импорт параметров переменных среды с другого сервера
  • Несколько входов в одной команде
  • Является ли `/ etc / X11 / xorg.conf` устаревшим?
  • Что ближе всего вы можете перезагрузить, не убивая все запущенные процессы?
  • 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 - лучшая ОС в мире.