Ram Posted October 23, 2009 Share Posted October 23, 2009 (edited) Hi, 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? Awaiting your response! Thanks! Edited October 23, 2009 by Ram Link to comment Share on other sites More sharing options...
water Posted October 23, 2009 Share Posted October 23, 2009 (edited) For a company environment you usually use something like NAGIOS to check your IT equipment.Otherwise you can use ping to check the machine and WMI to check the service. Edited October 23, 2009 by water My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
Baraoic Posted October 23, 2009 Share Posted October 23, 2009 (edited) 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 $Run = Run(@ComSpec & ' /c tasklist /s name_of_server_running_program_or_ip', @SystemDir, @SW_HIDE, 6) While ProcessExists($Run) Sleep(100) $Services = StdoutRead($Run, True) WEnd $aServices = StringSplit($Services, @LF) For $x = 1 To UBound($aServices) - 1 If StringInStr($aServices[$x], "name_of_process.exe") Then $good = 1 EndIf Next If $good = 1 Then _add_email_funcion_here("program good") Else _add_email_funcion_here("program not running") EndIf Edited October 23, 2009 by Onichan Link to comment Share on other sites More sharing options...
Ram Posted October 27, 2009 Author Share Posted October 27, 2009 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 $Run = Run(@ComSpec & ' /c tasklist /s name_of_server_running_program_or_ip', @SystemDir, @SW_HIDE, 6) While ProcessExists($Run) Sleep(100) $Services = StdoutRead($Run, True) WEnd $aServices = StringSplit($Services, @LF) For $x = 1 To UBound($aServices) - 1 If StringInStr($aServices[$x], "name_of_process.exe") Then $good = 1 EndIf Next If $good = 1 Then _add_email_funcion_here("program good") Else _add_email_funcion_here("program not running") EndIf Thanks for the code I get error in $good = 1 as it says it is not been declared. what shall I do here? BTW: This is not a big company where we can afford for software and hence we are just using free tool. And more over we are not public too. Link to comment Share on other sites More sharing options...
Baraoic Posted October 27, 2009 Share Posted October 27, 2009 (edited) 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.expandcollapse popup#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) While ProcessExists($Run) Sleep(100) $Services = StdoutRead($Run, True) WEnd $aServices = StringSplit($Services, @LF) For $x = 1 To UBound($aServices) - 1 If StringInStr($aServices[$x], "name_of_process.exe") Then $Good = 1 ExitLoop EndIf Next If $Good = 1 Then $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 @error Then MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $Send) EndIf ; ; The UDF Func _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_ToAddress Local $i_Error = 0 Local $i_Error_desciption = "" If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress $objEmail.Subject = $s_Subject If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then $objEmail.HTMLBody = $as_Body Else $objEmail.Textbody = $as_Body & @CRLF EndIf If $s_AttachFiles <> "" Then Local $S_Files2Attach = StringSplit($s_AttachFiles, ";") For $x = 1 To $S_Files2Attach[0] $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x]) ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach & @LF & '>Error code: ' & @error & @LF) ;### Debug Console If FileExists($S_Files2Attach[$x]) Then $objEmail.AddAttachment ($S_Files2Attach[$x]) Else ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF) SetError(1) Return 0 EndIf Next EndIf $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer If Number($IPPort) = 0 then $IPPort = 25 $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort ;Authenticated SMTP If $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_Password EndIf If $ssl Then $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True EndIf ;Update settings $objEmail.Configuration.Fields.Update ; Set Email Importance Switch $s_Importance Case "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.Send If @error Then SetError(2) Return $oMyRet[1] EndIf $objEmail="" EndFunc ;==>_INetSmtpMailCom ; ; ; Com Error Handler Func 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 returns Return EndFunc ;==>MyErrFunc Edited October 27, 2009 by Onichan Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now