-
Notifications
You must be signed in to change notification settings - Fork 1
Scripting
VBrazhnik edited this page Jun 28, 2018
·
11 revisions
1. Write a script which displays only the login, UID and Path of each entry of the /etc/passwd file.
Fields in /etc/passwd
Understanding /etc/passwd File Format:
- Username: It is used when user logs in. It should be between 1 and 32 characters in length.
- Password: An x character indicates that encrypted password is stored in /etc/shadow file. Please note that you need to use the passwd command to computes the hash of a password typed at the CLI or to store/update the hash of the password in /etc/shadow file.
- User ID (UID): Each user must be assigned a user ID (UID). UID 0 (zero) is reserved for root and UIDs 1-99 are reserved for other predefined accounts. Further UID 100-999 are reserved by system for administrative and system accounts/groups.
- Group ID (GID): The primary group ID (stored in /etc/group file)
- User ID Info: The comment field. It allow you to add extra information about the users such as user’s full name, phone number etc. This field use by finger command.
- Home directory: The absolute path to the directory the user will be in when they log in. If this directory does not exists then users directory becomes /
- Command/shell: The absolute path of a command or shell (/bin/bash). Typically, this is a shell. Please note that it does not have to be a shell.
How to write bash script
Writing Your First Script And Getting It To Work:
#!/bin/bash # My first script echo "Hello World!"
The first line of the script is important. This is a special clue, called a shebang, given to the shell indicating what program is used to interpret the script. In this case, it is
/bin/bash
. Other scripting languages such as Perl, awk, tcl, Tk, and python also use this mechanism.
The second line is a comment. Everything that appears after a "#" symbol is ignored by bash.
Answer
#!/bin/bash
# Write a script which displays only the login, UID and Path
IFS=':'
while read -r username password uid gid comment home_directory shell
do
echo "$username $uid $home_directory"
done < /etc/passwd
Alternative answer
#!/bin/bash
# Write a script which displays only the login, UID and Path
awk -F: '{print $1 " " $3 " " $6}' /etc/passwd