Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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!

share|improve this question
add comment

1 Answer

up vote 1 down vote accepted

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"
share|improve this answer
    
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
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.