Custom solutions for system monitoring and control
Reacting to Logins
From these building blocks, you can create small scripts with easy tools that respond to events on your system. For example, you can quite easily use logins to trigger actions – for example, to avoid discussions with the kids every evening if they have been sitting in front of the computer too long. When the bell tolls, you can then log them off the system automatically whether they are happy with it or not.
The script in Listing 8 relies on users
to discover the users currently logged on to the system and then on grep
to filter the output. This gives you an exit code of 0
in case of a match and of 1
in case of a miss. Based on the results, and the current time (assuming the hours between 21:00 and 07:00 are off limits), the script then allows user simon to use the system or throws him out without so much as a by your leave (Figure 4).
Listing 8
Automatic Logoff

The principle can also be applied to convenience and automation functions. For example, with a slightly modified script (Listing 9) you can launch a web server as soon as a specific user (jefe in this example) logs on. In this case, the script is designed for use with a systemd computer; you might also need to change the name for the web server service (in this example, httpd.service).
Listing 9
Launching a Web Server Conditionally
The user does not need to enter any commands or initiate any actions, and you don't even need to make any changes to home directories or user accounts. For example, in ~/.profile
or ~/.bashrc
), all you need is an active session. This approach lets you assign important tasks, such as starting a service or a backup, to a non-privileged user account. Of course, you need to call the shell script automatically when the computer boots. The approach is different, depending on the init system.
As a general rule, you would want to store the executable shell script in the /usr/local/sbin
directory. For older systems, such as Debian 7 with SysVinit, you would typically copy the skeleton
template, which is already in place on most systems, to a new file with an appropriate name below /etc/init.d
(this example uses weblogon
). Next, edit the init script to suit your needs, save the changes, and make the file executable by running chmod +x
. To enable the script for the typical runlevel, enter:
update-rc.d weblogon defaults
If you work on a computer with systemd, you need to create a new unit file named weblogon.service
, as shown in Listing 10, under the /usr/local/lib/systemd/system
directory, which you might have to create, and run the code in Listing 11 to link the instructions with the system and ensure an automatic start at bootup.
Listing 10
weblogon.service
Listing 11
Setting Up Autostart at Bootup
Messages via Email
Optionally, you can also tell your computer to notify you by email in case of important events. To do so, you need a mail transport agent (MTA), such as SSMTP [1] on your computer. The agent forwards email via a regular SMTP server so that the server mail is not discarded automatically as spam by the receiving email service.
Listing 12 shows a simple shell script that notifies you of all users still logged on to the computer after 22:00 hours. To handle this task, the script creates a helper file named mail.txt
, which ssmtp
then uses as input for the email to be sent.
Listing 12
User Notification
Before starting the script, you first need to set up SSMTP. To do so, use the configuration files ssmtp.conf
(Listing 13) and revaliases
(Listing 14) from the /etc/ssmtp
directory. Depending on which email provider you want to address, you need to enter different configuration details at this point. If you are having difficulty finding the right information, searching the Internet with <Provider> ssmtp will typically help.
Listing 13
ssmtp.conf
Listing 14
revaliases
The examples in the configuration files are applicable for a normal FreeMail provider. For test purposes, you can run ssmtp
in the shell script with the -v
option. The program is then far more verbose, allowing you to discover problems with the transmission more quickly and make the necessary changes.
Make sure that only root, or the user in whose context SSMTP runs, can see the SSMTP configuration file. Check the documentation of your Linux distribution for instructions on doing this (e.g., for Arch Linux [2]).
Conclusions
The examples shown here only cover a fraction of the possibilities that shell scripts offer for system monitoring. To create scripts, you do not need advanced programming capabilities; experience with terminal applications and simple constructs such as while
loops and if
statements are typically sufficient.
Infos
- SSMTP: https://packages.qa.debian.org/s/ssmtp.html
- SSMTP security: https://wiki.archlinux.org/index.php/SSMTP#Security
« Previous 1 2
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Direct Download
Read full article as PDF:
Price $2.95
News
-
Another New Linux Laptop has Arrived
Slimbook has released a monster of a Linux gaming laptop.
-
Mozilla VPN Now Available for Linux
The promised subscription-based VPN service from Mozilla is now available for the Linux platform.
-
Wayland and New App Menu Coming to KDE
The 2021 roadmap for the KDE desktop environment includes some exciting features and improvements.
-
Deepin 20.1 has Arrived
Debian-based Deepin 20.1 has been released with some interesting new features.
-
CloudLinux Commits Over 1 Million Dollars to CentOS Replacement
An open source, drop-in replacement for CentOS is on its way.
-
Linux Mint 20.1 Beta has Been Released
The first beta of Linux Mint, Ulyssa, is now available for downloading.
-
Manjaro Linux 20.2 has Been Unleashed
The latest iteration of Manjaro Linux has been released with a few interesting new features.
-
Patreon Project Looks to Bring Linux to Apple Silicon
Developer Hector Martin has created a patreon page to fund his work on developing a port of Linux for Apple Silicon Macs.
-
A New Chrome OS-Like Ubuntu Remix is Now Available
Ubuntu Web looks to be your Chrome OS alternative.
-
System76 Refreshes the Galago Pro Laptop
Linux hardware maker has revamped one of their most popular laptops.