Changing Solaris password with an expect script
Changing a users password without user keyboard input is very easy under Linux by using the builtin command "chpasswd "or "passwd --stdin". Solaris doesn't have such commands, the result can be achieved by expect
script.
#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 $PASS echo "username=$USER" echo "password=$PASS"