Как заставить 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"