LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   script to monitor process on remote machine (https://www.linuxquestions.org/questions/linux-newbie-8/script-to-monitor-process-on-remote-machine-258051/)

kencha 11-22-2004 02:59 PM

script to monitor process on remote machine
 
Hi
I need to check for a process running on multiple machines and if its not running, to send me an email.
I also want to give the list of machines as a separate text file i.e
checkprocess.pl "process name" "IPlist.txt"

Is there anything like this available. All the machines have the same user and use the same ssh keys..

thanks !!

twantrd 11-22-2004 05:01 PM

Yes, this is very possible. In order to grab the server's process and the IP's, you need to have a for loop to iterate each value in the text file.

To run commands on the remote computer it's like this:

#!/bin/bash

ssh whatever.server.com "(/usr/local/bin/apachectl graceful)"
exit 0

So what the above does is ssh into your remote computer and it restarts apache on the remote computer. As you can see, it's a very simple script.

So, lets say you want to ssh into a list of servers (the list of servers are in servers.txt)

#!/bin/bash

SERVERS=`cat servers.txt | awk '{print $1}'`
for server in $SERVERS; do
echo "I'm logging into $server"; ssh $server "(echo "Hello, I'm inside")"; done
exit 0


-twantrd

acid_kewpie 11-22-2004 05:14 PM

blimey, yet another thing i thought was 100% impossible... never stop learning... show's what i know!

kencha 11-23-2004 06:25 PM

Awesome!.. Thanks.. After ssh ing....
How do I check the process running on the boxes..
Can I do a ps-ef |grep process name on servers.txt?

I need to send an email with the details of all the servers on which this process is not running

thanks again

Tinkster 11-23-2004 06:49 PM

You can send ANY command you please via ssh,
and it will (if it has output to stdout) report back to
you what's going ...

In the scenario above
ssh whatever.server.com "ps-ef |grep process name"


Cheers,
Tink

twantrd 11-23-2004 06:54 PM

Afraid to tell you, but for that piece it's going to be a lot more scripting for sure. What I would do is run 'ps -ef | grep httpd | grep -v grep' on the remote computer and save the success of that command to a variable. Then implement an IF function to check if it was successful or not, if not, then execute the mail command.

-twantrd

kencha 01-07-2005 12:07 PM

Thanks. Thats what I did
`ssh $server -l $USERNAME "ps aux| grep -v grep | grep $PROCESS_NAME; exit"

And processed the output to send the mail

thanks !!


All times are GMT -5. The time now is 06:55 PM.