You can find out if user exists by searching in the /etc/passwd
file using the following command:
1 | 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.
1 2 3 4 5 6 | 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:
1 2 3 4 5 6 | 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.