Checking process and email if not running

5 posts in this topic

Ram 0

At work - A program is running on Windows 2003 machine. For some reason this program keeps closing down always. We have managed to get the program running on services.

Now I would like to have an automatic checker that keeps checking if the program is running or not and also keep checking if windows 2003 machine is running or not - if any one of them fail or both fail I would like to recieve an email?

I want to check this through another machine which is in the same network? Is this possible - if so how?

Share this post

Link to post

Share on other sites

Baraoic 0

Well I would first check it by pinging it like water said if its not up then you can skip the rest. If it is up then to check if the program is running you need the name of the process then you could use something like this

Share this post

Link to post

Share on other sites

Ram 0

Well I would first check it by pinging it like water said if its not up then you can skip the rest. If it is up then to check if the program is running you need the name of the process then you could use something like this

Share this post

Link to post

Share on other sites

Baraoic 0

Oh sorry I forgot to declare it, but even then you know that isn't the full code that you would need I didn't include something to email. I have used Jos SMTP Mailer which you can look at Here. You will need to modify the variales at the top and remember to change the process name and server ip or name.

#Include<file.au3>Global$oMyRet[2]Global$oMyError=ObjEvent("AutoIt.Error","MyErrFunc")Global$Good=0$SmtpServer="MailServer"; address for the smtp-server to use - REQUIRED$FromName="Name"; name from who the email was sent$FromAddress="your@Email.Address.com"; address from where the mail should come$ToAddress="your@Email.Address.com"; destination address of the email - REQUIRED;~ $Subject = "Process Status" ; subject from the email - can be anything you want it to be;~ $Body = "" ; the messagebody from the mail - can be left blank but then you get a blank mail$AttachFiles=""; the file you want to attach- leave blank if not needed$CcAddress=""; address for cc - leave blank if not needed$BccAddress=""; address for bcc - leave blank if not needed$Importance="Normal"; Send message priority: "High", "Normal", "Low"$Username="******"; username for the account used from where the mail gets sent - REQUIRED$Password="********"; password for the account used from where the mail gets sent - REQUIRED$IPPort=25; port used for sending the mail$ssl=0; enables/disables secure socket layer sending - put to 1 if using httpS;~ $IPPort=465 ; GMAIL port used for sending the mail;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS$Run=Run(@ComSpec&' /c tasklist /s name_of_server_running_program_or_ip',@SystemDir,@SW_HIDE,6)WhileProcessExists($Run)Sleep(100)$Services=StdoutRead($Run,True)WEnd$aServices=StringSplit($Services,@LF)For$x=1ToUBound($aServices)-1IfStringInStr($aServices[$x],"name_of_process.exe")Then$Good=1ExitLoopEndIfNextIf$Good=1Then$Subject="Good"$Body="Program is running"Else$Subject="BAD"$Body="Program is NOT Running"EndIf$Send=_INetSmtpMailCom($SmtpServer,$FromName,$FromAddress,$ToAddress,$Subject,$Body,$AttachFiles,$CcAddress,$BccAddress,$Importance,$Username,$Password,$IPPort,$ssl)If@errorThenMsgBox(0,"Error sending message","Error code:"&@error&" Description:"&$Send)EndIf;; The UDFFunc_INetSmtpMailCom($s_SmtpServer,$s_FromName,$s_FromAddress,$s_ToAddress,$s_Subject="",$as_Body="",$s_AttachFiles="",$s_CcAddress="",$s_BccAddress="",$s_Importance="Normal",$s_Username="",$s_Password="",$IPPort=25,$ssl=0)Local$objEmail=ObjCreate("CDO.Message")$objEmail.From='"'&$s_FromName&'" <'&$s_FromAddress&'>'$objEmail.To=$s_ToAddressLocal$i_Error=0Local$i_Error_desciption=""If$s_CcAddress<>""Then$objEmail.Cc=$s_CcAddressIf$s_BccAddress<>""Then$objEmail.Bcc=$s_BccAddress$objEmail.Subject=$s_SubjectIfStringInStr($as_Body,"<")AndStringInStr($as_Body,">")Then$objEmail.HTMLBody=$as_BodyElse$objEmail.Textbody=$as_Body&@CRLFEndIfIf$s_AttachFiles<>""ThenLocal$S_Files2Attach=StringSplit($s_AttachFiles,";")For$x=1To$S_Files2Attach[0]$S_Files2Attach[$x]=_PathFull($S_Files2Attach[$x])ConsoleWrite('@@ Debug(62) : $S_Files2Attach = '&$S_Files2Attach&@LF&'>Error code: '&@error&@LF);### Debug ConsoleIfFileExists($S_Files2Attach[$x])Then$objEmail.AddAttachment($S_Files2Attach[$x])ElseConsoleWrite('!> File not found to attach: '&$S_Files2Attach[$x]&@LF)SetError(1)Return0EndIfNextEndIf$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")=2$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")=$s_SmtpServerIfNumber($IPPort)=0then$IPPort=25$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=$IPPort;Authenticated SMTPIf$s_Username<>""Then$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername")=$s_Username$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword")=$s_PasswordEndIfIf$sslThen$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl")=TrueEndIf;Update settings$objEmail.Configuration.Fields.Update; Set Email ImportanceSwitch$s_ImportanceCase"High"$objEmail.Fields.Item("urn:schemas:mailheader:Importance")="High"Case"Normal"$objEmail.Fields.Item("urn:schemas:mailheader:Importance")="Normal"Case"Low"$objEmail.Fields.Item("urn:schemas:mailheader:Importance")="Low"EndSwitch$objEmail.Fields.Update; Sent the Message$objEmail.SendIf@errorThenSetError(2)Return$oMyRet[1]EndIf$objEmail=""EndFunc;==>_INetSmtpMailCom;;; Com Error HandlerFunc MyErrFunc()$HexNumber=Hex($oMyError.number,8)$oMyRet[0]=$HexNumber$oMyRet[1]=StringStripWS($oMyError.description,3)ConsoleWrite("### COM Error ! Number: "&$HexNumber&" ScriptLine: "&$oMyError.scriptline&" Description:"&$oMyRet[1]&@LF)SetError(1); something to check for when this function returnsReturnEndFunc;==>MyErrFunc