• [Blockierte Grafik: http://img4.fotos-hochladen.net/thumbnail/pinglistknhgpsb258_thumb.jpg]


    Hallo,
    das Programm hab ich mal für einen Kollegen geschrieben der testen wollte ob alle Server durchlaufen oder sich zwischendurch neustarten

    Funktionsweise:

    Spoiler anzeigen

    Das Programm pingt eine Liste von IP's und versendet, wenn sich ein Status ändert eine E-Mail.

    Man kann im Programm die IP's mit Beschreibung usw. eintragen.
    Die E-Mail Adresse wird bis aufs Passwort in eine ini geschrieben, damit man beim nächsten Start nicht wieder alles eingeben muss.
    Jeder Eintrag in der Liste bekommt einen eigenen Prozess.
    Schreibt Statusänderungen in ein Textdokument.


    Pinglist Code:

    Spoiler anzeigen
    [autoit]


    #cs --------------------------------------------------------------------------------------------------------
    Name: PingList

    [/autoit] [autoit][/autoit] [autoit]

    Description: Ping a list of Computers, write protocols, send e-mails if a Computer change his mode

    [/autoit] [autoit][/autoit] [autoit]

    Author: I3asti
    #ce --------------------------------------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>
    #include <date.au3>
    #include <GuiListView.au3>
    #include <file.au3>
    #include <mail.au3>
    #include <EditConstants.au3>
    #include <StructureConstants.au3>
    #include <Clipboard.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $IP_Adresse, $Timeout, $Kunde, $Beschreibung, $Intervall, $k, $File, $t, $Server, $Benutzername, $Passwort, $EMail, $Smtp, $Port, $SSL, $string, $stringsplit
    $ProgrammStatus = 0
    $Stop = 0
    Global $Adressen_Array[10000]
    $Adressen = @ScriptDir & "\pingliste.txt"
    $Ende = @ScriptDir & "\Ende.txt"
    $ESave = @ScriptDir & "\EMail.ini"
    $FirstRun = 1
    $Status_End1 = "Online"
    $Status_End2 = "Offline"
    $z = 0
    $Laufzeit = 0

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #region GUI
    $Ping = GUICreate("Ping", 961, 550, 193, 125)
    $Listview2 = GUICtrlCreateListView("Kunde|Beschreibung|IP-Adresse|Timeout|Ergebnis|letzter Ping", 8, 8, 946, 115)
    GUICtrlSendMsg(-1, 0x101E, 0, 175)
    GUICtrlSendMsg(-1, 0x101E, 1, 175)
    GUICtrlSendMsg(-1, 0x101E, 2, 166)
    GUICtrlSendMsg(-1, 0x101E, 3, 115)
    GUICtrlSendMsg(-1, 0x101E, 4, 155)
    GUICtrlSendMsg(-1, 0x101E, 5, 155)
    $Listview = GUICtrlCreateListView("Kunde|Beschreibung|IP-Adresse|Timeout|Ergebnis|letzter Ping", 8, 128, 609, 377)
    GUICtrlSendMsg(-1, 0x101E, 0, 85)
    GUICtrlSendMsg(-1, 0x101E, 1, 125)
    GUICtrlSendMsg(-1, 0x101E, 2, 120)
    GUICtrlSendMsg(-1, 0x101E, 3, 65)
    GUICtrlSendMsg(-1, 0x101E, 4, 85)
    GUICtrlSendMsg(-1, 0x101E, 5, 125)
    $Kunde_Label = GUICtrlCreateLabel("Kunde", 632, 128, 50, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Kunde_Input = GUICtrlCreateInput($Kunde, 688, 128, 265, 21)
    $Beschreibung_Label = GUICtrlCreateLabel("Beschreibung", 632, 160, 102, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Beschreibung_Input = GUICtrlCreateInput($Beschreibung, 736, 160, 217, 21)
    $IP_Label = GUICtrlCreateLabel("IP", 632, 192, 19, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $IP_Input = GUICtrlCreateInput($IP_Adresse, 656, 192, 297, 21)
    $Timeout_Label = GUICtrlCreateLabel("Timeout", 632, 224, 61, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Timeout_Input = GUICtrlCreateInput($Timeout, 696, 224, 257, 21)
    $Insert = GUICtrlCreateButton("Hinzufügen", 880, 256, 75, 25, 0)
    $Modus_Label = GUICtrlCreateLabel("Modus", 632, 264, 52, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Dauerping_Radio = GUICtrlCreateRadio("Dauerping (Jede Sekunde)", 632, 288, 250, 25)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Intervall_Radio = GUICtrlCreateRadio("Intervall", 632, 320, 113, 17)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Intervall_Input = GUICtrlCreateInput($Intervall, 832, 320, 121, 21)
    $Aktueller_Ping = GUICtrlCreateLabel("Aktueller Ping:", 120, 520, 500, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Benutzername_Input = GUICtrlCreateInput($Benutzername, 632, 386, 129, 21)
    $Passwort_Input = GUICtrlCreateInput($Passwort, 784, 386, 109, 21, $ES_PASSWORD)
    $SSL_Check = GUICtrlCreateCheckbox("SSL", 904, 386)
    $Benutzername_Label = GUICtrlCreateLabel("Benutzername", 632, 362, 109, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Passwort_Label = GUICtrlCreateLabel("Passwort", 784, 362, 109, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Zieladresse_Label = GUICtrlCreateLabel("Ziel-EMail", 632, 416, 109, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Zieladresse_Input = GUICtrlCreateInput($EMail, 632, 440, 129, 21)
    $SMTP_Label = GUICtrlCreateLabel("SMTP-Server", 784, 416, 109, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $SMTP_Input = GUICtrlCreateInput($Smtp, 784, 440, 109, 21)
    $Port_Label = GUICtrlCreateLabel("Port", 904, 416, 69, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Port_Input = GUICtrlCreateInput($Port, 904, 440, 49, 21)
    $Delete_Button = GUICtrlCreateButton("Löschen", 632, 480, 75, 25, 0)
    $Ende_Button = GUICtrlCreateButton("Ende", 792, 480, 75, 25, 0)
    $Start_Button = GUICtrlCreateButton("Start", 880, 480, 75, 25, 0)
    $Lade_Button = GUICtrlCreateButton("Lade Daten", 8, 520, 75, 25, 0)
    $Testmail_Button = GUICtrlCreateButton("Test-Mail", 792, 520, 75, 25, 0)
    $Close_Button = GUICtrlCreateButton("Beenden", 880, 520, 75, 25, 0)
    GUISetState(@SW_SHOW)
    GUICtrlSetOnEvent($Start_Button, "_Start")
    GUICtrlSetOnEvent($Ende_Button, "_End")
    GUICtrlSetOnEvent($Close_Button, "_Close")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
    GUICtrlSetOnEvent($Lade_Button, "_LadeDaten")
    GUICtrlSetOnEvent($Insert, "_SchreibeDaten")
    GUICtrlSetOnEvent($Delete_Button, "_Delete")
    GUICtrlSetOnEvent($Testmail_Button, "_Testmail")
    #endregion GUI

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Call("_LadeDaten")

    [/autoit] [autoit][/autoit] [autoit]

    If $ProgrammStatus = 1 Then
    AdlibRegister("_Ziel_Status", 1000)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    While 1

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(100) ;damit er nicht 100% cpu verbrauch

    [/autoit] [autoit][/autoit] [autoit]

    If $Laufzeit > 1000 Then
    Run(@ScriptName)
    Sleep(100)
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Testmail()

    [/autoit] [autoit][/autoit] [autoit]

    $Benutzername = GUICtrlRead($Benutzername_Input)
    $Passwort = GUICtrlRead($Passwort_Input)
    $EMail = GUICtrlRead($Zieladresse_Input)
    $Smtp = GUICtrlRead($SMTP_Input)
    $Port = GUICtrlRead($Port_Input)

    [/autoit] [autoit][/autoit] [autoit]

    If $Benutzername <> "" Then ;Wenn Benutzername und Passwort nicht leer sind
    If $Passwort <> "" Then ;Wenn Benutzername und Passwort nicht leer sind
    If $EMail <> "" Then ;Wenn die Zieladresse nicht leer ist
    If $Smtp <> "" Then ;Wenn ein SMTP-Server eingetragen ist
    If $Port <> "" Then ;Wenn ein Port eingetragen ist
    If StringInStr($EMail, "@") Then
    If StringInStr($EMail, " ") Then

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(16, "!!!Fehler!!!", "In der EMail ist ein Leerzeichen enthalten")

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    If BitAND(GUICtrlRead($SSL_Check), $GUI_CHECKED) Then

    [/autoit] [autoit][/autoit] [autoit]

    $SSL = 1 ;SSL an

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    $SSL = "" ;SSL aus

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Call("_SchreibeEmail")
    Call("_Mail", $Benutzername, $Passwort, "Testmail", $EMail, $Smtp, $Port, $SSL)

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(16, "!!!Fehler!!!", "In der EMail fehlt das @ Zeichen")

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Stop!!!", "Geben Sie einen Port an")
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Stop!!!", "Geben Sie einen SMTP-Server an")
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Stop!!!", "Geben Sie eine Zieladresse an")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Stop!!!", "Geben Sie ein Passwort an")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Stop!!!", "Geben Sie einen Benutzernamen an")
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Testmail

    [/autoit] [autoit][/autoit] [autoit]

    Func _Delete()
    If $ProgrammStatus = 1 Then ;Test ob Ping bereits ausgeführt wird
    MsgBox(16, "!!!Stop!!!", "Ping wird gerade ausgeführt")
    Else
    $Del = _GUICtrlListView_GetSelectedIndices($Listview) ;Ausgewählter Eintrag in Del schreiben
    If $Del = "" Then
    MsgBox(16, "!!!Fehler!!!", "Wählen sie einen Eintrag aus") ;wenn kein Eintrag ausgewählt war
    Else
    $Del = $Del + 1 ;Del um eins erhöhen
    _ArrayDelete($Adressen_Array, $Del) ;Eintrag aus Array löschen
    $k = 0
    $d = 0 ;==> Zähler setzen

    [/autoit] [autoit][/autoit] [autoit]

    FileDelete($Adressen) ;Liste löschen

    [/autoit] [autoit][/autoit] [autoit]

    For $l = 1 To $Adressen_Array[0] Step 1
    If $d <> 0 Then ;beim ersten durchlauf nicht durchführen
    $k = $k + 1
    FileWriteLine($Adressen, $Adressen_Array[$k] & @CRLF) ;Eitnräge schreiben
    EndIf
    $d = 1
    Next
    Call("_LadeDaten") ;Daten laden
    EndIf
    EndIf
    EndFunc ;==>_Delete

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Start()

    [/autoit] [autoit][/autoit] [autoit]

    FileDelete($Ende)

    [/autoit] [autoit][/autoit] [autoit]

    $Benutzername = GUICtrlRead($Benutzername_Input)
    $Passwort = GUICtrlRead($Passwort_Input)
    $EMail = GUICtrlRead($Zieladresse_Input)
    $Smtp = GUICtrlRead($SMTP_Input)
    $Port = GUICtrlRead($Port_Input)

    [/autoit] [autoit][/autoit] [autoit]

    If $ProgrammStatus = 1 Then ;Test ob Ping bereits ausgeführt wird
    MsgBox(16, "!!!Stop!!!", "Ping läuft bereits")
    Else

    [/autoit] [autoit][/autoit] [autoit]

    If $Benutzername <> "" Then ;Wenn Benutzername und Passwort nicht leer sind
    If $Passwort <> "" Then ;Wenn Benutzername und Passwort nicht leer sind
    If $EMail <> "" Then ;Wenn die Zieladresse nicht leer ist
    If $Smtp <> "" Then ;Wenn ein SMTP-Server eingetragen ist
    If $Port <> "" Then ;Wenn ein Port eingetragen ist
    If StringRegExp($EMail, "@") Then
    If StringRegExp($EMail, " ") Then

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(16, "!!!Fehler!!!", "In der EMail ist ein Leerzeichen enthalten")

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    If BitAND(GUICtrlRead($SSL_Check), $GUI_CHECKED) Then

    [/autoit] [autoit][/autoit] [autoit]

    $SSL = 1 ;SSL an

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    $SSL = "" ;SSL aus

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Call("_SchreibeEmail")
    IniWrite($ESave, "Running", "Running", "1")
    $Intervall = "" ;Setzt Intervall zurück
    Call("_Check")

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(16, "!!!Fehler!!!", "In der EMail fehlt das @ Zeichen")

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Stop!!!", "Geben Sie einen Port an")
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Stop!!!", "Geben Sie einen SMTP-Server an")
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Stop!!!", "Geben Sie eine Zieladresse an")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Stop!!!", "Geben Sie ein Passwort an")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Stop!!!", "Geben Sie einen Benutzernamen an")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    EndFunc ;==>_Start

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Close()

    [/autoit] [autoit][/autoit] [autoit]

    If $ProgrammStatus <> 0 Then ;Test ob Ping ausgeführt wird
    MsgBox(16, "!!!Stop!!!", "Ping läuft noch bitte erst Ping beenden")
    Else
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Close

    [/autoit] [autoit][/autoit] [autoit]

    Func _Modus($Modus)

    [/autoit] [autoit][/autoit] [autoit]

    $FirstRun = 1 ;Setzt FirstRun auf 0
    $Stop = 0 ;Setzt Stop wieder auf 0
    $t = 0 ;Setzt t auf 0
    $ProgrammStatus = 1 ;Setzt den ProgrammStatus auf laufend
    GUICtrlSetData($Aktueller_Ping, "Aktueller Ping:Ping läuft")

    [/autoit] [autoit][/autoit] [autoit]

    If $Modus = 1 Then
    $Intervall = 1000
    Call("_Go") ;startet _Start
    ElseIf $Modus = 2 Then
    $Intervall = $Intervall * 1000
    Call("_Go") ;startet _Start
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Modus

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Check()

    [/autoit] [autoit][/autoit] [autoit]

    If GUICtrlRead($Dauerping_Radio) = 1 Then ;Wenn Dauerping gedrückt ist
    Call("_Modus", 1)
    ElseIf GUICtrlRead($Intervall_Radio) = 1 Then ;Wenn Intervall gedrückt ist
    $Intervall = GUICtrlRead($Intervall_Input) ;Intervall Wert einlesen
    If $Intervall <> "" Then ;Wenn Intervall nicht leer ist
    Call("_Modus", 2) ;Intervall Modus aufrufen
    Else
    MsgBox(16, "Fehler", "Bitte einen Intervall angeben") ;Ausgabe wenn Intervall leer ist
    EndIf
    Else
    MsgBox(16, "Fehler", "Bitte einen Modus auswählen") ;Wenn kein Modus angegeben ist
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Check

    [/autoit] [autoit][/autoit] [autoit]

    Func _End()
    $Stop = 1 ;Setzt Stop auf 1
    $ProgrammStatus = 0 ;Setzt lauft auf 0
    GUICtrlSetData($Aktueller_Ping, "Aktueller Ping: Ping beendet")
    AdlibUnRegister("_Ziel_Status")
    FileWriteLine($Ende, $Stop)
    IniWrite($ESave, "Running", "Running", "0")
    EndFunc ;==>_End

    [/autoit] [autoit][/autoit] [autoit]

    Func _Datum()

    [/autoit] [autoit][/autoit] [autoit]

    $Heute = @YEAR & "." & @MON & "." & @MDAY & "|" ;Datum heute
    $Time = @HOUR & ":" & @MIN & ":" & @SEC & "|" ;Zeit jetzt
    $Datum = $Heute & $Time ; Datum und Zeit zusammensetzen

    [/autoit] [autoit][/autoit] [autoit]

    Return $Datum
    EndFunc ;==>_Datum

    [/autoit] [autoit][/autoit] [autoit]

    Func _Go()

    [/autoit] [autoit][/autoit] [autoit]

    $k = -1

    [/autoit] [autoit][/autoit] [autoit]

    For $l = 1 To $Adressen_Array[0] Step 1 ;solange obejekte im array sind

    [/autoit] [autoit][/autoit] [autoit]

    $k = $k + 1
    $Dat = _GUICtrlListView_GetItemText($Listview, $k, 0) & "|" & _GUICtrlListView_GetItemText($Listview, $k, 1) & "|" & _GUICtrlListView_GetItemText($Listview, $k, 2) & "|" & _GUICtrlListView_GetItemText($Listview, $k, 3) & "|" & $Benutzername & "|" & $Passwort & "|" & $EMail & "|" & $Smtp & "|" & $Port & "|" & $SSL & "|" & $k & "|" & $Intervall & "|" ;schreibt die Daten für die Pingfunktion
    Run('"' & @ScriptDir & '\Ping.exe " "' & $Dat & '"')
    Sleep(500)

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    $Zeit = $Intervall - 100

    [/autoit] [autoit][/autoit] [autoit]

    Call("_Ziel_Status")
    Call("_Ziel_Status")
    AdlibRegister("_Ziel_Status", $Zeit)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Go

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Ziel_Status()

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_DeleteAllItems($Listview2)

    [/autoit] [autoit][/autoit] [autoit]

    $k = -1
    $o = -1
    $off = 0
    $Laufzeit = $Laufzeit + 1

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    For $l = 1 To $Adressen_Array[0] Step 1 ;solange obejekte im array sind

    [/autoit] [autoit][/autoit] [autoit]

    $k = $k + 1

    [/autoit] [autoit][/autoit] [autoit]

    $Status_input = @ScriptDir & "\Status.ini" ;Status einlesen
    $Stat = IniRead($Status_input, $k, "Status", "Fehler beim lesen")

    [/autoit] [autoit][/autoit] [autoit]

    $Datum = Call("_Datum") ;Führt Datum aus

    [/autoit] [autoit][/autoit] [autoit]

    If $Stat = "Online" Then
    _GUICtrlListView_SetTextBkColor($Listview, 0x00ff00)

    [/autoit] [autoit][/autoit] [autoit]

    $Datum = Call("_Datum") ;Führt Datum aus

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 3), 3)
    _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 2), 2)
    _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 1), 1)
    _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 0), 0)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Else
    _GUICtrlListView_SetTextBkColor($Listview, 0x0000fa)
    _GUICtrlListView_SetTextBkColor($Listview2, 0x0000fa)

    [/autoit] [autoit][/autoit] [autoit]

    $Datum = Call("_Datum") ;Führt Datum aus

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 3), 3)
    _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 2), 2)
    _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 1), 1)
    _GUICtrlListView_SetItemText($Listview, $k, _GUICtrlListView_GetItemText($Listview, $k, 0), 0)

    [/autoit] [autoit][/autoit] [autoit]

    $off = 1

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_SetItemText($Listview, $k, $Stat, 4) ;Status schreiben

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $StatPing = IniRead($Status_input, $k, "Ping", "Fehler beim lesen")
    _GUICtrlListView_SetItemText($Listview, $k, $StatPing, 5) ;Status schreiben

    [/autoit] [autoit][/autoit] [autoit]

    If $off = 1 Then

    [/autoit] [autoit][/autoit] [autoit]

    $o = $o + 1

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateListViewItem("", $Listview2)
    _GUICtrlListView_SetItemText($Listview2, $o, _GUICtrlListView_GetItemText($Listview, $k, 5), 5)
    _GUICtrlListView_SetItemText($Listview2, $o, _GUICtrlListView_GetItemText($Listview, $k, 4), 4)
    _GUICtrlListView_SetItemText($Listview2, $o, _GUICtrlListView_GetItemText($Listview, $k, 3), 3)
    _GUICtrlListView_SetItemText($Listview2, $o, _GUICtrlListView_GetItemText($Listview, $k, 2), 2)
    _GUICtrlListView_SetItemText($Listview2, $o, _GUICtrlListView_GetItemText($Listview, $k, 1), 1)
    _GUICtrlListView_SetItemText($Listview2, $o, _GUICtrlListView_GetItemText($Listview, $k, 0), 0)

    [/autoit] [autoit][/autoit] [autoit]

    $off = 0

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Ziel_Status

    [/autoit] [autoit][/autoit] [autoit]

    Func _SchreibeDaten()
    If $ProgrammStatus = 1 Then ;Test ob Ping bereits ausgeführt wird
    MsgBox(16, "!!!Stop!!!", "Ping wird gerade ausgeführt")
    Else
    $Kunde = GUICtrlRead($Kunde_Input)
    $Beschreibung = GUICtrlRead($Beschreibung_Input)
    $IP = GUICtrlRead($IP_Input)
    $Timeout = GUICtrlRead($Timeout_Input)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $Kunde <> "" Then
    If $Beschreibung <> "" Then
    If $IP <> "" Then
    If $Timeout <> "" Then

    [/autoit] [autoit][/autoit] [autoit]

    $Daten = $Kunde & "|" & $Beschreibung & "|" & $IP & "|" & $Timeout & "|"
    FileWriteLine($Adressen, $Daten & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Fehler!!!", "Bitte vergewissern Sie sich, dass alle Felder ausgefüllt sind")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Fehler!!!", "Bitte vergewissern Sie sich, dass alle Felder ausgefüllt sind")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Fehler!!!", "Bitte vergewissern Sie sich, dass alle Felder ausgefüllt sind")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else
    MsgBox(16, "!!!Fehler!!!", "Bitte vergewissern Sie sich, dass alle Felder ausgefüllt sind")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Call("_LadeDaten")
    EndIf
    EndFunc ;==>_SchreibeDaten

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _SchreibeEmail()

    [/autoit] [autoit][/autoit] [autoit]

    FileDelete($ESave)
    IniWrite($ESave, "Benutzername", "Benutzername", $Benutzername)
    IniWrite($ESave, "EMail", "EMail", $EMail)
    IniWrite($ESave, "SMTP", "SMTP", $Smtp)
    IniWrite($ESave, "Port", "Port", $Port)
    IniWrite($ESave, "SSL", "SSL", $SSL)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_SchreibeEmail

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _LadeDaten()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $ProgrammStatus = 1 Then

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(16, "!!!STOP!!!", "Programm läuft gerade")

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_DeleteAllItems($Listview)
    ReDim $Adressen_Array[1]
    ReDim $Adressen_Array[500]
    _FileReadToArray($Adressen, $Adressen_Array)
    For $l = 1 To $Adressen_Array[0] Step 1
    GUICtrlCreateListViewItem($Adressen_Array[$l], $Listview)
    Next
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If FileExists($ESave) Then

    [/autoit] [autoit][/autoit] [autoit]

    $Benutzername = IniRead($ESave, "Benutzername", "Benutzername", "Fehler beim auslesen")
    $EMail = IniRead($ESave, "EMail", "EMail", "Fehler beim auslesen")
    $Smtp = IniRead($ESave, "SMTP", "SMTP", "Fehler beim auslesen")
    $Port = IniRead($ESave, "Port", "Port", "Fehler beim auslesen")
    $SSL = IniRead($ESave, "SSL", "SSL", "Fehler beim auslesen")

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($Benutzername_Input, $Benutzername) ;Benutzername in Feld schreiben
    GUICtrlSetData($Zieladresse_Input, $EMail) ;Email in Feld schreiben
    GUICtrlSetData($SMTP_Input, $Smtp) ;Smtp in Feld schreiben
    GUICtrlSetData($Port_Input, $Port) ;Port in Feld schreiben

    [/autoit] [autoit][/autoit] [autoit]

    If $SSL <> "" Then

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetState($SSL_Check, $GUI_CHECKED)

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetState($SSL_Check, $GUI_UNCHECKED)

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $ProgrammStatus = IniRead($ESave, "Running", "Running", "0")

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_LadeDaten

    [/autoit]

    Pingfunktion Code:

    Spoiler anzeigen
    [autoit]


    #cs --------------------------------------------------------------------------------------------------------
    Name: Pingfunktion

    [/autoit] [autoit][/autoit] [autoit]

    Author: I3asti
    #ce ---

    [/autoit] [autoit][/autoit] [autoit]

    #NoTrayIcon
    #include "file.au3"
    #include "mail.au3"
    #include "date.au3"
    #include "EditConstants.au3"
    #include "Array.au3"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Dim $IP, $Kunde, $Beschreibung, $Timeout, $Intervall, $File, $t, $Server, $Benutzername, $Passwort, $EMail, $Smtp, $Port, $SSL, $Nummer, $Status_output, $Ping, $Status_Anderung, $Datum_Anderung, $Status, $Ping_output, $Restart
    $FirstRun = 0
    $Status_End1 = 1
    $Status_End2 = 2
    $Ende = @ScriptDir & "\Ende.txt"
    $Adressen = @ScriptDir & "\Data.txt"
    Global $Stop[5]
    $Stop[1] = 0
    $Zahler = 0

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Call("_Ziel_Status")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Datum()

    [/autoit] [autoit][/autoit] [autoit]

    $Heute = @YEAR & "." & @MON & "." & @MDAY & "|" ;Datum heute
    $Time = @HOUR & ":" & @MIN & ":" & @SEC & "|" ;Zeit jetzt
    $Datum = $Heute & $Time ; Datum und Zeit zusammensetzen

    [/autoit] [autoit][/autoit] [autoit]

    Return $Datum
    EndFunc ;==>_Datum

    [/autoit] [autoit][/autoit] [autoit]

    Func _FirstRun()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Datum = Call("_Datum") ;Führt Datum aus
    $Datum_Anderung = $Datum ;Datum Anderung wird für Aktuellen Eintrag gesetzt

    [/autoit] [autoit][/autoit] [autoit]

    If $Ping Then ;ping ausführen

    [/autoit] [autoit][/autoit] [autoit]

    FileWriteLine($File, "Ping gestartet Status:|Online" & "|" & $Datum & @CRLF) ;positiv
    IniDelete($Status_output, $Nummer, "Status")
    IniWrite($Status_output, $Nummer, "Status", "Online")
    $Status = 1 ;Status schreiben
    $Letzte_Ping = $Datum ; Letzte Ping Zeit setzen
    $Status_Anderung = 2

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    FileWriteLine($File, "Ping gestartet Status:|Offline" & "|" & $Datum & @CRLF) ;positiv
    IniDelete($Status_output, $Nummer, "Status")
    IniWrite($Status_output, $Nummer, "Status", "Offline")
    $Status = 2 ;Status schreiben
    $Letzte_Ping = $Datum ; Letzte Ping Zeit setzen
    $Status_Anderung = 1

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_FirstRun

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Status_Anderung($Status)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Datum = Call("_Datum") ;Führt Datum aus

    [/autoit] [autoit][/autoit] [autoit]

    $Letzte_Ping = $Datum

    [/autoit] [autoit][/autoit] [autoit]

    $Letzte_Ping = StringSplit($Letzte_Ping, "|")
    IniDelete($Status_output, $Nummer, "Ping")
    IniWrite($Status_output, $Nummer, "Ping", $Letzte_Ping[2])

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $Status = 1 Then ;Wird Bei Status 1 ausgeführt

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $Status_Anderung = $Status Then ;Wird bei einer Statusänderung ausgeführt

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Sleep(5000)
    $Ping = Ping($IP, $Timeout);Pingt
    If $Ping Then

    [/autoit] [autoit][/autoit] [autoit]

    IniDelete($Status_output, $Nummer, "Status")
    IniWrite($Status_output, $Nummer, "Status", "Online")

    [/autoit] [autoit][/autoit] [autoit]

    Call("_Schreiben", 1) ;Schreiben war Offline
    $Datum_Anderung = $Datum
    $Status_Anderung = 2

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $Status_Anderung = $Status Then ;Wird bei einer Statusänderung ausgeführt

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(5000)
    $Ping = Ping($IP, $Timeout);Pingt
    If $Ping Then

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    IniDelete($Status_output, $Nummer, "Status")
    IniWrite($Status_output, $Nummer, "Status", "Offline")

    [/autoit] [autoit][/autoit] [autoit]

    Call("_Schreiben", 2) ;Schreiben war Online
    $Datum_Anderung = $Datum
    $Status_Anderung = 1

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $FirstRun = 1 ;wird auf 2ten durchlauf gesetzt

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Status_Anderung

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Schreiben($Modus)

    [/autoit] [autoit][/autoit] [autoit]

    If $FirstRun = 1 Then ;beim ersten durchlauf nicht ausführen

    [/autoit] [autoit][/autoit] [autoit]

    $Datum = Call("_Datum") ;Führt Datum aus

    [/autoit] [autoit][/autoit] [autoit]

    If $Modus = 1 Then

    [/autoit] [autoit][/autoit] [autoit]

    Call("_Mail", $Benutzername, $Passwort, $Server & " ist Online gegangen", $EMail, $Smtp, $Port, $SSL)
    $Text = "Server war|Offline|" & $Datum_Anderung & $Datum ;Ausgabetext
    FileWriteLine($File, $Text & @CRLF) ;Ausgabe speichern

    [/autoit] [autoit][/autoit] [autoit]

    Else

    [/autoit] [autoit][/autoit] [autoit]

    Call("_Mail", $Benutzername, $Passwort, $Server & " ist Offline gegangen", $EMail, $Smtp, $Port, $SSL)
    $Text = "Server war|Online|" & $Datum_Anderung & $Datum ;Ausgabetext
    FileWriteLine($File, $Text & @CRLF) ;Ausgabe speichern

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndIf
    EndFunc ;==>_Schreiben

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Ende()

    [/autoit] [autoit][/autoit] [autoit]

    $Datum = Call("_Datum") ;Führt Datum aus

    [/autoit] [autoit][/autoit] [autoit]

    If $Ping Then ;ping ausführen
    FileWriteLine($File, "Ping beendet Status:|Online" & "|" & $Datum & @CRLF) ;positiv
    Else
    FileWriteLine($File, "Ping beendet Status:|Offline" & "|" & $Datum & @CRLF);negativ
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Ende

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Ziel_Status()

    [/autoit] [autoit][/autoit] [autoit]

    $Datum = Call("_Datum") ;Führt Datum aus

    [/autoit] [autoit][/autoit] [autoit]

    If $CmdLine[0] < 1 Then Exit

    [/autoit] [autoit][/autoit] [autoit]

    $string = $CmdLine[1] ;Adresse in string speichern
    $stringsplit = StringSplit($string, "|") ;string splitten

    [/autoit] [autoit][/autoit] [autoit]

    $Kunde = $stringsplit[1] ;Kunde in Variable schreiben
    $Beschreibung = $stringsplit[2] ;Beschreibung in Variable schreiben
    $IP = $stringsplit[3] ;IP in Variable schreiben
    $Timeout = $stringsplit[4] ;Timeout in Variable schreiben
    $Benutzername = $stringsplit[5] ;Benutzername in Variable schreiben
    $Passwort = $stringsplit[6] ;Passwort in Variable schreiben
    $EMail = $stringsplit[7] ;EMail in Variable schreiben
    $Smtp = $stringsplit[8] ;Smtp in Variable schreiben
    $Port = $stringsplit[9] ;Port in Variable schreiben
    $SSL = $stringsplit[10] ;SSL in Variable schreiben
    $Nummer = $stringsplit[11] ;Nummer in Variable schreiben
    $Intervall = $stringsplit[12] ;Intervall in Variable schreiben
    $First = $stringsplit[13] ;In Variable schreiben ob Programm schon gelaufen ist

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $stringsplit[0] = 15 Then
    $Status = $stringsplit[14] ;Status in Variable schreiben
    $Status_Anderung = $stringsplit[15] ;Statusänderung in Variable schreiben

    [/autoit] [autoit][/autoit] [autoit]

    $Restart = $CmdLine[1] ;CmdLine in Restart schreiben
    $Restart = StringTrimRight($Restart, 4) ;Restart kürzen
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $First <> "" Then
    $FirstRun = 1
    Else
    $FirstRun = 0
    $Restart = $CmdLine[1] & "1" ;CmdLine FirstRun auf 1 setzen
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If $SSL <> "" Then
    $SSL = 1
    Else
    $SSL = 0
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $Status_output = @ScriptDir & "\Status.ini" ;hier wird der Status gespeichert

    [/autoit] [autoit][/autoit] [autoit]

    If FileExists(@ScriptDir & "\Protokolle\") Then ;wenn der Ordner existiert soll nichts gemacht werden
    Else
    DirCreate(@ScriptDir & "\Protokolle") ;wenn nicht soll er erstellt werden
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Server = $Kunde & "." & $Beschreibung & "(" & $IP & ")"
    $File = @ScriptDir & "\Protokolle\" & $Server & ".txt"
    $Server = "Kunde: " & $Kunde & @CRLF & "Beschreibung: " & $Beschreibung & @CRLF & "IP: " & $IP ;File Name

    [/autoit] [autoit][/autoit] [autoit]

    While 1

    [/autoit] [autoit][/autoit] [autoit]

    $Zahler = $Zahler + 1

    [/autoit] [autoit][/autoit] [autoit]

    If $Zahler > 2500 Then

    [/autoit] [autoit][/autoit] [autoit]

    $Restart &= "|" & $Status & "|" & $Status_Anderung ;Status, Statusänderung hinzufügen

    [/autoit] [autoit][/autoit] [autoit]

    Run('"' & @ScriptDir & '\Ping.exe " "' & $Restart & '"') ;Script neu starten
    Sleep(100)
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $t <> 0 Then ;beim ersten ausführen nicht ausführen
    Sleep($Intervall)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $t = 1

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Ping = Ping($IP, $Timeout);Pingt

    [/autoit] [autoit][/autoit] [autoit]

    If $FirstRun = 0 Then ;beim ersten durchlauf ausführen

    [/autoit] [autoit][/autoit] [autoit]

    Call("_FirstRun") ;erster durchlauf

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $Ping Then ;wenn ping true ist

    [/autoit] [autoit][/autoit] [autoit]

    Call("_Status_Anderung", 1) ;positiv aufruf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Else ;wenn ping false ist

    [/autoit] [autoit][/autoit] [autoit]

    Call("_Status_Anderung", 2) ;negativ aufruf

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _FileReadToArray($Ende, $Stop)

    [/autoit] [autoit][/autoit] [autoit]

    If $Stop[1] = 1 Then ;leitet exit Sequenz ein

    [/autoit] [autoit][/autoit] [autoit]

    $Datum = Call("_Datum") ;Führt Datum aus

    [/autoit] [autoit][/autoit] [autoit]

    If $Status_End2 = $Status Then ;wenn die Netzwerkverbindung getrennt war

    [/autoit] [autoit][/autoit] [autoit]

    $Letzte_Ping = $Datum
    FileDelete($Status_output)
    FileWriteLine($Status_output, "Online")

    [/autoit] [autoit][/autoit] [autoit]

    $Letzte_Ping = StringSplit($Letzte_Ping, "|")
    FileDelete($Ping_output)
    FileWriteLine($Ping_output, $Letzte_Ping[2])

    [/autoit] [autoit][/autoit] [autoit]

    $Text = "Server war|Offline|" & $Datum_Anderung & $Datum ;Ausgabetext
    FileWriteLine($File, $Text & @CRLF) ;Ausgabe speichern
    Call("_Ende")

    [/autoit] [autoit][/autoit] [autoit]

    ElseIf $Status_End1 = $Status Then ;wenn die Netzwerkverbindung bestand

    [/autoit] [autoit][/autoit] [autoit]

    $Letzte_Ping = $Datum
    FileDelete($Status_output)
    FileWriteLine($Status_output, "Offline")

    [/autoit] [autoit][/autoit] [autoit]

    $Letzte_Ping = StringSplit($Letzte_Ping, "|")
    FileDelete($Ping_output)
    FileWriteLine($Ping_output, $Letzte_Ping[2])

    [/autoit] [autoit][/autoit] [autoit]

    $Text = "Server war|Online|" & $Datum_Anderung & $Datum ;Ausgabetext
    FileWriteLine($File, $Text & @CRLF) ;Ausgabe speichern
    Call("_Ende")

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ExitLoop

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    WEnd
    EndFunc ;==>_Ziel_Status

    [/autoit]

    Mail Code:

    Spoiler anzeigen
    [autoit]


    #cs --------------------------------------------------------------------------------------------------------
    Name: mail

    [/autoit] [autoit][/autoit] [autoit]

    Description: Send Mails

    [/autoit] [autoit][/autoit] [autoit]

    Author: Jos

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Changed by I3asti

    [/autoit] [autoit][/autoit] [autoit]

    Added _Mail($Name, $Password, $Body, $ToAddress, $SmtpServer) Function
    #ce --------------------------------------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;##################################
    ; Include
    ;##################################
    #include "file.au3"
    ;##################################
    ; Variables
    ;##################################

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Subject = "Server-Ping" ; subject from the email - can be anything you want it to be
    $AttachFiles = "" ; the file(s) you want to attach seperated with a ; (Semicolon) - 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"
    ;~ $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

    [/autoit] [autoit][/autoit] [autoit]

    ;##################################
    ; Script
    ;##################################
    Global $oMyRet[2]
    Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

    [/autoit] [autoit][/autoit] [autoit]

    Func _Mail($Username, $Password, $Body, $ToAddress, $SmtpServer, $IPPort, $ssl)

    [/autoit] [autoit][/autoit] [autoit]

    $FromName = $Username ; name from who the email was sent
    $stringsplit = StringSplit($Username,"@")
    $Username = $stringsplit[1]
    $FromAddress = $Username & "@ping.de" ; address from where the mail should come

    [/autoit] [autoit][/autoit] [autoit]

    $mail = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
    EndFunc ;==>_Mail

    [/autoit] [autoit][/autoit] [autoit]

    ; 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 : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
    If FileExists($S_Files2Attach[$x]) Then
    ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
    $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

    [/autoit]

    vll hat ja noch jemand Verbesserungsvorschläge :D

    Mfg I3asti

    4 Mal editiert, zuletzt von I3asti (9. August 2012 um 14:00)

  • Falls jemand mal kurz Zeit hätte ich komm net drauf. Ich habe das Programm über das Wochenende auf der Arbeit laufen lassen und als ich heute früh danach geschaut habe war es aus ohne Fehlermeldung, auch nichts in den Ereignisprotokollen. :huh: Ich habe es jetzt nochmal gestartet und lasse es laufen um zu schauen ob das Problem wieder kommt.

    Mfg I3asti

    2 Mal editiert, zuletzt von I3asti (26. März 2012 um 08:54)

  • Jo des hatte ich bei Google auch rausgefunden, aber trotzdem danke. Ich weiß aber nicht warum der vollläuft. ?(

    Edit: Problem umgegangen funktionierender Code ist eingefügt

    Mfg I3asti

    Einmal editiert, zuletzt von I3asti (19. April 2012 um 08:39)

  • Hallo,

    ich hab versucht den Code zu analysieren.. ich schreibe grad ein ähnliches tool, aber ich weis nicht wie ich den dauerping beenden kann..

    HotKeySet("c", "PingEnde")

    Func PingEnde()
    send("^c")
    EndFunc

    funktioniert da iwie nicht

    jemand ne Idee ?

  • Mahlzeit,

    mein "Dauerping" ist ja nur die Ping-Funktion von Autoit in einer Schleife, wenn du das beenden willst musst du einfach nur die Schleife beenden.

    Wie startest du deinen Dauerping? Strg + c funktioniert ja nur in der Konsole wenn du deinen Dauerping mit ping -t laufen lässt.

    Mfg I3asti

  • in meinem Tool arbeite ich grad mit Konsolen-Befehlen

    Spoiler anzeigen
    [autoit]


    Func pinging()
    Local $foo = Run(@ComSpec & " /c ping "&GUICtrlRead($IP_Input[0])&"."&GUICtrlRead($IP_Input[1])&"."&GUICtrlRead($IP_Input[2])&"."&GUICtrlRead($IP_Input[3]), @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    Local $line
    While 1
    $line = $line&StdoutRead($foo)
    If @error Then ExitLoop
    GUICtrlSetData($iMemo, $line)
    Sleep(250)
    Wend
    While 1
    $line = StderrRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $line)
    Wend

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]


    Den Dauerping habe ich nun mit nem Hotkey zum stoppen gebracht.

    Spoiler anzeigen
    [autoit]


    Func pinging2()
    HotKeySet("{F1}", "PingEnde")
    While 1
    if $Ping == 1 Then
    Local $foo = Run(@ComSpec & " /c ping "&GUICtrlRead($IP_Input[0])&"."&GUICtrlRead($IP_Input[1])&"."&GUICtrlRead($IP_Input[2])&"."&GUICtrlRead($IP_Input[3]), @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    Local $line
    While 1
    $line = $line&StdoutRead($foo)
    If @error Then ExitLoop
    GUICtrlSetData($iMemo, $line)
    Sleep(250)
    Wend
    While 1
    $line = StderrRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $line)
    Wend
    Else

    ExitLoop
    GUISetState()

    EndIf

    WEnd
    ;MsgBox(0, "Debug", "Exiting...")

    EndFunc
    Func PingEnde()
    $Ping = 0
    EndFunc

    [/autoit]


    Arbeite grad an der Abfrage für wenn Computername -> leer dann frag IP ab, wenn die leer dann MsgBox "geben sie eines von beidem ein"...

    Versuche mich grad so in AutoIt reinzufuddeln, hab bisher immer nur mit Java programmiert und will mir jetzt eine Admin-Erleichterung basteln

  • Hab bemerkt das der Arbeitsspeicher doch noch volläuft obwohl ich zwischendurch alles beende weiß aber leider nicht warum falls jemand ne Idee hätte ^^

    Mfg I3asti