Hallo zusammen,
ich stelle heute mal keine Frage sondern möchte euch etwas zur verfügung stellen.
Ich nutze für meinen Windows Server 2008 ein selbstprogrammiertes Programm welches mir erlaubt Programme zu überwachen, Laufen sie? Geben sie keine Rückmeldung mehr?
Stürzt ein Programm ab, oder meldet sich nciht mehr (Keine rückmeldung),
startet mein Programm das Programm neu und sendet eine Mail an Empfänger XXXXXX
Es ist ein kleiner übersichtlicher Code, leicht selbst zu Programmieren.
Hier für euch der Code, eine oberfläche müsst ihr euch selbst zusammenbasteln.
Es ist Windows Forms, vergesst die label nicht und den Button sonst bekommt ihr einen Fehler.
Es ist euch erlaubt den Code zu nutzen, verändern oder zu erweitern wie ihr wollt.
Viel spass damit, ich würde mich über ein "Thanks" freuen ;)
ich stelle heute mal keine Frage sondern möchte euch etwas zur verfügung stellen.
Ich nutze für meinen Windows Server 2008 ein selbstprogrammiertes Programm welches mir erlaubt Programme zu überwachen, Laufen sie? Geben sie keine Rückmeldung mehr?
Stürzt ein Programm ab, oder meldet sich nciht mehr (Keine rückmeldung),
startet mein Programm das Programm neu und sendet eine Mail an Empfänger XXXXXX
Es ist ein kleiner übersichtlicher Code, leicht selbst zu Programmieren.
Hier für euch der Code, eine oberfläche müsst ihr euch selbst zusammenbasteln.
Es ist Windows Forms, vergesst die label nicht und den Button sonst bekommt ihr einen Fehler.
Es ist euch erlaubt den Code zu nutzen, verändern oder zu erweitern wie ihr wollt.
Viel spass damit, ich würde mich über ein "Thanks" freuen ;)
Code:
Option Strict On
Imports System.Net.Mail
Public Class Form1
Private t As New Threading.Thread(AddressOf Thread)
Private p As New Process()
Private test, erfolg, fehlg, neu As Integer
Private Sub Thread()
'Hier gebt ihr an welches Programm überwacht werden soll. Versucht alles aus zu füllen. Wenn ihr keine Startargumente benötigt nehmt es ganz heraus.
'
p.StartInfo.FileName = ""
p.StartInfo.WorkingDirectory = ""
p.StartInfo.Arguments = ""
p.StartInfo.WindowStyle = ProcessWindowStyle.Normal
p.Start()
'Das ist die Zeit bis zum 1. Test in ms, diese Zeit sollte min. 1 Minute betragen, da ein
'Programm sich beim starten gern nciht zurückmeldet
Threading.Thread.Sleep(60000)
While True
test = test + 1
Me.Invoke(Sub() Label4.Text = test.ToString)
If Not p.Responding Then
Try
p.Kill()
p.Start()
neu = neu + 1
Me.Invoke(Sub() Label7.Text = neu.ToString)
Catch ex As InvalidOperationException
p.Start()
neu = neu + 1
Me.Invoke(Sub() Label7.Text = neu.ToString)
Catch ex As Exception
MessageBox.Show(ex.Message & vbCrLf & ex.StackTrace)
End Try
fehlg = fehlg + 1
Me.Invoke(Sub() Label6.Text = fehlg.ToString)
'Mail - Hier tragt ihr eure Maildaten ein damit das Programm euch eine Mail sendet falls ein Problem auftritt!
'
Dim Msg As New MailMessage
Dim myCredentials As New System.Net.NetworkCredential
myCredentials.UserName = "EURE MAIL ADRESSE"
myCredentials.Password = "EUER PASSWORT"
Msg.IsBodyHtml = False
Dim mySmtpsvr As New SmtpClient()
mySmtpsvr.Host = "SMTP SERVER"
mySmtpsvr.Port = 25
mySmtpsvr.UseDefaultCredentials = False
mySmtpsvr.Credentials = myCredentials
Msg.From = New MailAddress("ABSENDER")
Msg.To.Add("EMPFÄNGER")
Msg.Subject = "BETREFF"
Msg.Body = "Unerwarteter Neustart - Programm wurde Neugestartet" & vbCrLf & "Getestet: " & test & vbCrLf & "Erfolg: " & erfolg & vbCrLf & "Fehlgeschlagen: " & fehlg & vbCrLf & "Neugestartet: " & neu & _
vbCrLf & vbCrLf & "Bitte prüfe das Programm auf Fehler falls es in letzter Zeit häufiger auftritt!"
mySmtpsvr.Send(Msg)
'Das ist die Zeit bis zum 1. Test in ms, diese Zeit sollte min. 1 Minute betragen, da ein
'Programm sich beim starten gern nciht zurückmeldet
Threading.Thread.Sleep(60000)
Else
erfolg = erfolg + 1
Me.Invoke(Sub() Label5.Text = erfolg.ToString)
End If
'Hier trag ihr ein das alle X ms geprüft werden soll. 1500 sind 1,5 sek.
'
Threading.Thread.Sleep(1500)
End While
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
t.Start()
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If t.IsAlive Then
t.Abort()
End If
End Sub
End Class