Bash script to monitor system service

This bash script runs and checks to see if a service like httpd, or mysql is running and alerts if it is not.

Script Usage httpd mariadb

Where httpd and mariadb are the services you want to monitor/check.

Setup Script

Create file and paste the following contents in.


timeHour=date +%H # date/time just shows the hour
quietHour="02" # If it is this hour, then exit program, useful if services are expected to go down during a particular time for maintenance
if ( echo ${timeHour} | grep ${quietHour}); then
echo "Is during quiet time. Quiting."

function ALERT {
msg="~/ -b" # Sends a message to Microsoft Teams channel. Needs the script in the users home directory.
${msg} "$1"
if (systemctl status ${serviceName} | grep Active | grep inactive); then
ALERT "ERROR: $(hostname) - ${serviceName} - ${0} is inactive"
echo "ERROR: ${serviceName} is inactive!"
echo "Running!"
for i in $@
echo Checking ${i}

Note the script that is called is another script that is called that sends an alert to Microsoft Teams. Is not needed for this script to run, but allows for remote alerting.

Save file and make it executable

chmod +x

Add script to crontab (Optional)

crontab -e

The following runs the script every 5 minutes. Can change the 5 to 1 to run every minute. Change httpd and mariadb to the service you want to monitor.

*/5 * * * * /home/UserName/ httpd mariadb

Upload ssh key to multiple servers automatically

Here is a quick script I created to automate copying a ssh key to multiple remote servers.

Basic command – the command uses sshpass to upload the ssh key to a remote server, this allows you to execute the command and not have to enter in a password to authenticate.

sshpass -p password ssh-copy-id -o StrictHostKeyChecking=no admin@remotehost




for host in `cat ${remotehosts}`
sshpass -p${password} ssh-copy-id -o StrictHostKeyChecking=no ${username}@${host}
echo "Uploaded key to " ${host}

echo "Finished!"


Using the script

  1. Download here.
  2. Make it executable
    chmod +x
  3. Edit the script and change the username and password.
  4. Create a file that contains each host’s IP address or hostname.
  5. Run script (change hostlist.txt to your host list you created in step 3.)
    ./ hostlist.txt
  6. Wait for the script to finish.


chmod +x
sed -i s/admin/bob/g                      <-- Change username - you can just manually edit the file,
sed -i s/MyCoolPassword123/password/g     <-- Change password - it might be easier than using sed
echo "" >> host.txt                     <-- Add to the host list
echo "Bob" >> host.txt                               <-- Add hostname bob to host list
./ host.txt                                <-- Upload ssh key to all host's in the host file i.e. "bob" and ""