validate_user () { user=$1 pass=$2 shadow_digest=$(/usr/bin/getent shadow "$user" | awk -F: '{print $2}') if [ -z "$shadow_digest" ] then echo "Invalid user" return fi salt=$(echo $shadow_digest|awk -F\$ '{print "$"$2"$"$3}') export USER_PASS=$pass export PASS_SALT=$salt user_digest=$(perl -e 'print crypt($ENV{USER_PASS},$ENV{PASS_SALT})') echo $user_digest if [ "$user_digest" = "$shadow_digest" ]; then echo "Password matched." else echo "Password did not match" fi } validate_user 'USER' 'PASSWORD'