如何让 Bash 脚本接受用户输入来更改密码

如何让 Bash 脚本接受用户输入来更改密码

在 OSX 上,以下命令将更改 Open Directory(Apple 的 LDAP)密码。$ 是提示符:

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

我希望将其变成某种交互式 shell 脚本(我们称之为“odpasswd”),该脚本首先提示管理员输入他们想要更改密码的帐户的用户名,然后输入密码,如下所示:

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

我对 shell 脚本不太熟悉,不知道如何将其变成这样。

非常感谢您的帮助!谢谢!

答案1

您可以为 -P“$password”定义变量。另请参阅 bash 中的“read”函数。

$ dscl -u diradmin -P'密码'/LDAPv3/127.0.0.1 passwd /Users/用户名新密码

这是一个未经测试的脚本,但您可以弄清楚它。

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

相关内容