Changing Linux user password without user keyboard input is very easy by builtin command "chpasswd "or "passwd --stdin".
Solaris doesn't have such commands , the result can be achieved by Expect script.
$cat chpwd.sh
#!/usr/local/bin/expect --
# Input: username password
set USER [lindex $argv 0]
set PASS [lindex $argv 1]
if { $USER == "" || $PASS == "" } {
puts "Usage: ./scriptname username password\n"
exit 1
}
spawn sudo passwd $USER
expect "assword:"
send "$PASS\r"
expect "assword:"
send "$PASS\r"
expect eof
#Shell script: Generate a random password and call the Expect script to set it
$cat createpwd.sh
#!/bin/ksh
# Generate a random password for a user and set the new password
USER=$1
PASS=`tr -dc [:alnum:] </dev/urandom | fold -8 | head -1`
if [ -z "$USER" ]; then
echo "Usage $0 username"
exit
fi
./chpwd.sh $USER $PASSecho "username=$USER"
echo "password=$PASS"
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.