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 !! |
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 |
blimey, yet another thing i thought was 100% impossible... never stop learning... show's what i know!
|
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 |
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 |
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 |
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. |