
228
|
Chapter 10: Scripting
cbarrel:x:502:502:Creighton Barrel:/home/cbarrel:/bin/bash
cmaharias:x:503:503:C Maharias:/home/cmaharias:/bin/bash
pgasquette:x:504:504:Papa Gasquette:/home/pgasquette:/bin/bash
bfrapples:x:505:505:Bob Frapples:/home/bfrapples:/bin/bash
The colon-separated fields are:
• Account name
• Encrypted password, or
x if /etc/shadow is used
• User ID (uid)
• Group ID (gid)
• Full name or description
• Home directory
• Shell
We’re interested in the fifth field (full name or description). In the ancient Unix
scrolls, this was called the gecos field, for reasons that were obsolete even then. The
name persists, and it’s useful to know.
Script Versions
We’ll start each of the following sections with a minimal script that searches for a
string anywhere in the /etc/passwd file and prints the matching line. We know this is
too broad, but we want to get the script working before we get too fancy.
Next, we’ll split the input lines into fields and restrict the pattern matching to the
gecos field that contains our users’ names.
Then we’ll further restrict the search to lines in which the value of the uid field is
greater than 500. In our case, normal user IDs start at 501, so this will exclude sys-
tem accounts and other automatons.
By this point we’ll be pretty tired of the previous steps, so we’ll look for some tools
that can do some of this work for us.
The bash script
Most languages provide function ...