October 10th, 2012, 09:15 AM
-
Help with unix loops in a login shell script
Ok it goes without saying that I am very new to Unix. Basically I'm trying to make a very simple log in scrip to run in terminal, where the user and pass are taken from a text file (in the form "user|password"), compared with what the user types in for username and password, and then has a different outcome if login is successful or not. So far I'm stuck on the follow bit of script:
IFS='|' #Set Internal Field Seperator
while read user pass
do
for i in /home/linuxbox/scripts/login_script/logins.txt
do
if [ "$username" = "$user" ] && [ "$password" = "$pass" ]
echo "Access Granted" #access is granted
exit
else
echo "Access Denied"
fi
done
done < /home/linuxbox/scripts/login_script/logins.txt
If I type in say the third user/pass combination it will return:
Enter Username:
test
Enter Password:
test
Access Denied
Access Denied
Access Granted
As far as I can tell I need to set the else statement outside the loop however am stuck on how to do so. Any help (or thoughts on a better way of doing it) would be appreciated. Oh and sorry about the messy script, its been changed a lot and I got lazy with formatting.