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.
The ^
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 if
statement.
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