You can find out if user exists by searching in the
/etc/passwd file using the following command:
egrep -i "^useraccount:" /etc/passwd
The above command will print the matching record from
/etc/passwd if the user exists or nothing if the user does not exist.
^ symbol is used to make sure there is no characters before the username and the
: character is used as the delimiter in the file (which indicates the end of the username). By wrapping the username with these characters we are sure that if we matched a record, we matched the correct record with the full username.
A very simple way to use this code in a script is by utilizing the
$? (question mark) variable. The question mark variable contains the
exit status of the last command that executed. Specifically,
egrep will return 0 if there was a match or else it will return a a positive number (usually 1).
Taking advantage of this behavior, after executing the above command, we check the
$? variable to see the result with an
egrep -i "^useraccount:" /etc/passwd; if [ $? -eq 0 ]; then echo "User Exists" else echo "User does not exist -- Invalid Username" fi
You can also find out if a group exists by searching in the
/etc/group file. Similar to the approach we showed before, we can check if a group exists using the following:
egrep -i "^groupname" /etc/group; if [ $? -eq 0 ]; then echo "Group Exists" else echo "Group does not exist -- Invalid Group name" fi
This post is also available in: Greek
Shouldn’t it be this?
(note the “:”)
egrep -i “^useraccount:” /etc/passwd
otherwise if user “useraccount1” exists – you’ll match it.
Thank you 🙂
You are right. I changed the call in the article.