Link to home
Start Free TrialLog in
Avatar of huskeraider
huskeraiderFlag for United States of America

asked on

Python: Notify if Error

I have a script that stops and starts services on several servers (8). When it finishes, it sends me an email that the script has run successfully. I have the stderr going to a file also. what i want to do is read the file and do the following:

if error exists in output.log then send me an email
else
if no error exists continue with the script.


I know i  need to run this in the loop so that i get an email if there's an error. As it is now, i get an email when it completes looping through all of the servers and stops / restarts the services.

I'm only interested in either how to google examples of what i'm looking for, or resources that help me figure this out. I don't need it done for me. I'm not getting a clear picture of what that looks like in Python.

Thanks.

thanks.
ASKER CERTIFIED SOLUTION
Avatar of kaufmed
kaufmed
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of pepr
pepr

Huskeraider, can you show how you call the script that start services and how you redirect its output?  My guess is that you may want to use the subprocess.Popen() with suitable arguments to capture the produced output in your Python script and simply check the produced content.
Avatar of huskeraider

ASKER

I call a batch file that launches a ruby script that stops the service and listens until the service stops. I have the stderr going to a text file. I was going to check the text file for errors. if errors then email me. if not, complete the process and send "completed successfully" message.

Is that what you wanted to know?
Kaufmed,

thanks for the example. This is something i might be able to use in the layout i have.
How complex the batch is? It is likely that it could be rewritten easily to Python (i.e. calling from Python the same things that are called from the batch).  Then it would be easy to capture the redirected stdout and stderr and to check their content. Can you show a representative fragment of the batch file (with how the redirection is done)?
I'm basically looking for an example of a If statement that reads and looks for certain text in a text file. if it finds "error" then it sends a error message. if there's nothing in the text file, it finishes and sends a completed message.

the batch has a ruby script that sends a stop request then it listens until the service is stopped. then it starts the service. when stopped it goes to the next server in the list.
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
@pepr

Line 5 should be

    errorFound = True

correct?
@kaufmed: Yes :)   Thanks for spotting the error.
Thank you both for your assistance both of these examples gives me what i need.

thanks again.