When you manage multiple servers it’s sometimes impossible to stay ahead of the various administrative tasks, which is why automation is so important.
If you’re working on a linux based server and want to monitor the status of a service, here is a quick an easy way to automate that process.
#!/bin/bash
# Script to find if a service is running
for i in ossec-monitord ossec-logcollector ossec-integratord;
do ps auwx | grep -v grep | grep $i >/dev/null 2>&1 ;
if [ $? = 0 ];
then
echo `date “+%Y-%m-%d %H:%M “`”$i Running…”;
else
echo `date “+%Y-%m-%d %H:%M “`”$i not running…”;
fi;
What we did above is create a simple loop looking for three distinct services:
- ossec-monitord
- ossec-logcollector
- ossec-integratord
Those three services are assigned to the i variable, and that variable is then passed into the grep query here:
ps auwx | grep -v grep | grep $i >/dev/null 2>&1 ;
What we’re also doing above is cutting out any grep inquiries, because if you were to run a grep command it will show as a process as shown here in red:
root@server:~/scripts# ps auwx | grep ossec-logcollector
root 1260 0.0 0.0 4876 1784 ? S May19 0:03 /var/ossec/bin/ossec-logcollector
root 29353 0.0 0.0 14428 1116 pts/0 S+ 20:59 0:00 grep –color=auto ossec-logcollector
By cutting out the grep request you see this response:
root@server:~/scripts# ps auwx | grep -v grep | grep ossec-logcollector
root 1260 0.0 0.0 4876 1784 ? S May19 0:03 /var/ossec/bin/ossec-logcollector
This is important because this if [ $? = 0 ]; is looking for the grep exit value of 0, which states:
EXIT STATUS
The grep utility exits with one of the following values:
0 One or more lines were selected.
1 No lines were selected.
>1 An error occurred.
With this selection, if you run the grep and there are no service running it would still find the grep service itself. It’d give you a false positive response.
The echo command then prints the status of the service:
echo `date “+%Y-%m-%d %H:%M “`”$i Running…”;
It passes each argument through the loop. If the service is found to be running it prints:
2020-05-19 18:27 ossec-monitord Running…
2020-05-19 18:27 ossec-logcollector Running…
2020-05-19 18:27 ossec-integratord Running…