Files
mastering-unix-ss/chapter24/chpwd_menu.ksh
Fabio Scotto di Santolo 4cc88d2f6e initial commit
2020-07-28 19:28:25 +02:00

144 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/ksh
#
# SCRIPT: chpwd_menu.ksh
# AUTHOR: Randy Michael
# DATE: 11/05/2007
# PLATFORM: AIX
# REV: 1.1.P
#
# PURPOSE: This script was created for the Operations Team
# to change user passwords. This shell script uses
# "sudo" to execute the "pwdadm" command as root.
# Each member of the Operations Team needs to be
# added to the /etc/sudoers file. CAUTION: When
# editing the /etc/sudoers file always use the
# /usr/local/sbin/visudo program editor!!!
# NEVER DIRECTLY EDIT THE sudoers FILE!!!!
#
# REV LIST:
#
#
# set -x # Uncomment to debug this script
# set -n # Uncomment to check syntax without any execution
#
#######################################################
# DEFINE FUNCTIONS HERE
#######################################################
function chg_pwd
{
USER_NAME="$1"
echo "\nWhen prompted for a password use YOUR NORMAL PASSWORD"
echo "NOT the new password...\n"
# The next command turns off the checking of the password history
/usr/local/bin/sudo /usr/bin/pwdadm -f NOCHECK $USER_NAME
if [ $? -ne 0 ]
then
echo "\nERROR: Turning off password history failed..."
usage
exit 1
fi
# The next command changes the user's password
/usr/local/bin/sudo /usr/bin/pwdadm $USER_NAME
if [ $? -ne 0 ]
then
echo "\nERROR: Changing $USER_NAME password failed..."
usage
exit 1
fi
# The next command forces the user to change his or her password
# at the next login.
/usr/local/bin/sudo /usr/bin/pwdadm -f ADMCHG $USER_NAME
return 0
}
#######################################################
# START OF MAIN
#######################################################
case $(uname) in
AIX) : # Do nothing
;;
*) echo "ERROR: This script only works on AIX...EXITING..."
exit 10
;;
esac
OPT=0 # Initialize to zero
clear # Clear the screen
while [[ $OPT != 99 ]] # Start a loop
do
# Draw reverse image bar across the top of the screen
# with the system name.
clear
tput smso
echo " `hostname` "
tput sgr0
echo ""
# Draw menu options.
echo "\n\n\n\n\n\n\n"
print "10. Change Password"
echo "\n\n\n\n\n\n\n\n\n"
print "99. Exit Menu"
# Draw reverse image bar across bottom of screen,
# with error message, if any.
tput smso
echo " $MSG "
tput sgr0
# Prompt for menu option.
read OPT
# Assume invalid selection was taken. Message is always
# displayed, so blank it out when a valid option is selected.
MSG=" Invalid option selected "
# Option 10 - Change Password
if [ $OPT -eq 10 ]
then
echo "\nUsername for password change? \c"
read USERNAME
grep $USERNAME /etc/passwd >/dev/null 2>&1
if [ $? -eq 0 ]
then
chg_pwd $USERNAME
if [ $? -eq 0 ]
then
MSG="$USERNAME password successfully changed"
else
MSG="ERROR: $USERNAME password change failed"
fi
else
MSG=" ERROR: Invalid username $USERNAME "
fi
fi
# End of Option 99 Loop
done
# Erase menu from screen upon exiting.
clear