Operating systems 1 -- 2008-2009 -- info.uvt.ro/Laboratory 5
Appearance
Quick links: front; laboratories agenda, 1, 2, 3, 4, 5, 6, projects, evaluation, tools, references.
Command substitution
[edit]- syntax:
`<command> [argument] ...` $( <command> [argument] ... )
- catching the current working directory in a variable:
WORKING=`pwd`
- or:
WORKING=$( pwd )
- or (better with quoting):
WORKING="$( pwd )"
- catching the current date in a variable:
DATE=`date`
- or:
DATE=$( date )
- or:
DATE="$( date )"
- catching the whole content of a file in a variable:
PASSWD="$( cat /etc/passwd )" echo "${PASSWD}"
Regular expressions and globbing
[edit]- links:
Mini projects
[edit]System users and groups querying
[edit]- write a simple bash script that allows us to query the (UNIX/Linux) system users and groups database;
- note: all the needed information is inside /etc/passwd and /etc/group files;
- it will list all users:
$ ./query.sh show-users root bin fetchmail ciprian ...
- it will list all users that are allowed to login (they have the shell set to /bin/bash, /bin/sh):
$ ./query.sh show-valid-users root ciprian
- it will list all groups:
$ ./query.sh show-groups root daemon audio ...
- it will list all users that are in a group:
$ ./query.sh show-users-in-group audio root ciprian
- it will list all groups a user is in:
$ ./query.sh show-groups-for-user ciprian ciprian audio cdrom ...
- it will print the home-dir of a given user:
$ ./query.sh show-home-for-user ciprian /home/ciprian
- note: try to use only grep, sed, cat, head/tail, don't use existing commands that do the required operations;
- links:
Syslog querying
[edit]- write a script that allows us to query through the syslog messages (a file located at /var/log/syslog);
- to view all messages from a given host:
$ ./query.sh show-from-host router May 10 20:20:08 router kernel: Enabling... May 10 20:20:08 router sshd: Starting... ...
- to view all messages from a given component:
$ ./query.sh show-from-component kernel May 10 20:20:08 router kernel: Enabling... ...
- to view all messages from a given host and component:
$ ./query.sh show-from-host-and-component router kernel May 10 20:20:08 router sshd: Starting... ...
- to view only those entries containing a given string:
$ ./query.sh search ACPI May 10 20:20:08 router kernel: Enabling ACPI... ...
Simple file versioning system
[edit]- implement something similar with SVN, but in Bash, and much simpler...
- links: