1

The following command on OSX will change an Open Directory (Apple's LDAP) password. The $ is the prompt:

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

I would love to turn this into an interactive shell script of some sort (let's call it 'odpasswd') that first prompts the admin for the username whose account they want to change passwords for, then for the password, along these lines:

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

I'm not enough of a shell script expert to know how to turn this into something like this.

Your help is always much appreciated! Thanks!

1 Answer 1

1

You could define variables for the -P "$password". Also read about 'read' function in bash.

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

This is an untested script, but you could figure it out.

#!/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" 
2
  • Thanks, that is just what I was looking for. Now it's working just great. Cheers! Commented Oct 11, 2012 at 21:36
  • read -s is a bash-only convention. For a sh-compatible script, turn off echo with stty -echo right before the read command, then turn it back on with stty echo afterwards. Commented Oct 17, 2012 at 14:33

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.