Как заставить Bash Script принять пользовательский ввод для изменения пароля

Следующая команда в OSX изменит пароль Open Directory (Apple LDAP). $ Является подсказкой:

$ dscl -u diradmin -P 'password' /LDAPv3/127.0.0.1 passwd /Users/username newpassword

Я хотел бы превратить это в какой-нибудь интерактивный сценарий оболочки (назовем его "odpasswd"), который сначала запрашивает у администратора имя пользователя, для которого они хотят сменить пароль, а затем для пароля, по следующим строкам:

$ odpasswd
$ Username you'd like to change passwords for?
  johnd
$ New Password?
  secretpassword
$ Done! Password changed successfully for username 'johnd' to 'secretpassword'

Мне не хватает специалиста по сценариям оболочки, чтобы понять, как это сделать.

Ваша помощь всегда ценится! Спасибо!

1 ответ

Решение

Вы можете определить переменные для -P "$password". Также читайте о функции чтения в bash.

$ dscl -u diradmin -P 'пароль' /LDAPv3/127.0.0.1 passwd / Пользователи / имя пользователя newpassword

Это непроверенный сценарий, но вы можете понять это.

#!/bin/bash

read -p "For which user to change the password? " username
read -s "Enter the old password for $username " oldpassword
read -s "Enter the new password for $username " newpassword

dscl -u diradmin -P "$oldpassword" /LDAPv3/127.0.0.1 passwd /Users/"$username" "$newpassword"
Другие вопросы по тегам