Server Log per Ping erstellen

  • Hallo zusammen,

    bin neu und wäre dankbar für nen Tip zu folgender Thematik:

    Habe mir ein kleines Server Admin Tool gebastelt und möchte u.a. über eine Logdatei die On/Off Zeiten von 4 Servern protokollieren.

    Das Hauptskript hat eine GUI mit diversen Funktionen und der unten gepostete Code soll die Serverlog Datei führen.

    Wie zu sehen, reicht das nur für einen Server und außerhalb des Hauptskripts, da die Schleife das Hauptskript natürlich blockiert.

    Funktionieren würde das ganze .... aber wäre recht umständlich :S

    Wenn mir jemand nen Tipp geben könnte wie ich mehrere Server in einem abfangen oder evtl. sogar ins Hauptskript einbinden könnte wäre das weltklasse. :)


    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <File.au3>
    #NoTrayIcon

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

    serveroff_log ()

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

    Func serveroff_log ()

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

    Do
    $ping = ping ("IP_XY", 200)

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

    sleep (500)
    Until $ping = 0
    _FileWriteLog (@ScriptDir & "\testlog.log", "Server offline")
    call ("serverup_log")
    EndFunc

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

    Func serverup_log ()

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

    Do
    $ping = ping ("IP_XY", 200)
    sleep (500)
    Until $ping = 1
    _FileWriteLog (@ScriptDir & "\testlog.log", "Server online")
    call ("serveroff_log")
    EndFunc

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

    Einmal editiert, zuletzt von KoWalski (9. Mai 2010 um 16:40)

  • Zur Not gehts so:

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #NoTrayIcon

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

    serveroff_log ()

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

    Func serveroff_log ()
    While 1
    $ping1 = ping ("IP_XY", 200)
    If $ping1 = 0 And $mode1 = 0 Then
    _FileWriteLog (@ScriptDir & "\testlog.log", "Server1 offline")
    $mode1 = 1
    ElseIf $ping1 = 1 And $mode1 = 1 Then
    _FileWriteLog (@ScriptDir & "\testlog.log", "Server online")
    $mode1 = 0
    EndIf
    $ping2 = ping ("IP_XY", 200)
    If $ping2 = 0 And $mode2 = 0 Then
    _FileWriteLog (@ScriptDir & "\testlog.log", "Server1 offline")
    $mode2 = 1
    ElseIf $ping2 = 1 And $mode2 = 1 Then
    _FileWriteLog (@ScriptDir & "\testlog.log", "Server online")
    $mode2 = 0
    EndIf
    $ping3 = ping ("IP_XY", 200)
    If $ping3 = 0 And $mode3 = 0 Then
    _FileWriteLog (@ScriptDir & "\testlog.log", "Server1 offline")
    $mode3 = 1
    ElseIf $ping3 = 1 And $mode3 = 1 Then
    _FileWriteLog (@ScriptDir & "\testlog.log", "Server online")
    $mode3 = 0
    EndIf
    $ping4 = ping ("IP_XY", 200)
    If $ping4 = 0 And $mode4 = 0 Then
    _FileWriteLog (@ScriptDir & "\testlog.log", "Server1 offline")
    $mode4 = 1
    ElseIf $ping4 = 1 And $mode4 = 1 Then
    _FileWriteLog (@ScriptDir & "\testlog.log", "Server online")
    $mode4 = 0
    EndIf
    sleep (500)
    WEnd
    EndFunc

    [/autoit]
    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • &quot;oder so?&quot;
    [autoit]

    Func _ping()
    Local $ping[3]
    $ping[0] = "www.google.de"
    $ping[1] = "www.autoit.de"
    $ping[2] = "www.xyz.com"

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

    For $i = 0 To UBound($ping)-1
    $result = Ping($ping[$i])
    Switch @error
    Case 0
    _FileWriteLog(@ScriptDir & "\testlog.log", $ping[$i] & " - Server online - Antwortzeit:" & $result & "ms")
    Case 1
    _FileWriteLog(@ScriptDir & "\testlog.log", $ping[$i] & " - Server offline")
    Case 2
    _FileWriteLog(@ScriptDir & "\testlog.log", $ping[$i] & " - Server nicht erreichbar")
    Case 3
    _FileWriteLog(@ScriptDir & "\testlog.log", $ping[$i] & " - Falsche Adresse")
    Case 4
    _FileWriteLog(@ScriptDir & "\testlog.log", $ping[$i] & " - unbekannter Fehler")
    EndSwitch
    Next
    EndFunc ;==>_ping

    [/autoit]