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!

Kyle Brandt
  • 83,619
  • 74
  • 305
  • 448
Dan
  • 141
  • 1
  • 6

1 Answers1

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"
Valentin Bajrami
  • 4,045
  • 1
  • 18
  • 26
  • Thanks, that is just what I was looking for. Now it's working just great. Cheers! – Dan Oct 11 '12 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. – bonsaiviking Oct 17 '12 at 14:33