Erstes Skript: Client Check

  • Hallo Leute,

    ich wollte euch mal mein erstes Skript vorstellen. Sinn des Skripts: Es sollte lediglich alle 15 Minuten prüfen, ob im Netzwerk irgendwelche Clients online sind und wenn eine Stunde lang alle Clients offline sind, dann sollte das Skript den Server herunterfahren (Shutdown ist noch nicht eingebaut).

    Verbesserungsvorschläge bzw. konstruktive Kritik sind gerne erwünscht.....


    [autoit]

    ; Skriptname: ClientCheck v1.0
    ; Skriptauthor: Rudi1982
    ; Datum: 18.06.2010

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

    #include

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

    $IPArray = StringSplit(@IPAddress1, ".") ; Splitte die lokale IP Adresse in vier Array Segmente
    $oc = 0 ; Online Clients: zählt die Anzahl der Clients die online sind
    $Limit = 0 ; Limit bezeichnet die Anzahl der Durchläufe, wenn alle Clients offline sind

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

    $logpfad = "D:\log.log"
    $logeintrag = "Der Server wird heruntergefahren"

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

    While $Limit <= 3 ; Wenn beim 4.Versuch kein Client online ist, dann breche die Schleife ab!

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

    For $IPArray[4] = 10 to 30 ; Mit der for-Schleife werden die einzelnen Hosts durchgegangen

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

    $IP = $IPArray[1] & "." & $IPArray[2] & "." & $IPArray[3] & "." & $IPArray[4] ; Die vier Array-Segmente werden in dieser Variable zu einer IP zusammengesetzt

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

    ; MsgBox(64,"Information", "Teste Client mit IP:" & $IP)

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

    $pvar = Ping($IP,250) ; Durchführung der PING-Anweisung
    If $pvar Then
    ;Msgbox(0,"Status","Online, roundtrip was:" & $pvar)
    $oc = $oc +1 ; Erhöhe die Variable der Online-Clienten um 1
    Else
    ;Msgbox(0,"Status","Der Client scheint offline zu sein " & @error)
    EndIf

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

    $pvar = 0 ; Setze die Ping-Variable wieder auf 0
    Next

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

    If $oc = 1 Then
    ; MsgBox(64,"Information","Es ist " & $oc & " Client online.")
    ElseIf $oc > 1 Then
    ; MsgBox(64,"Information","Anscheinend sind " & $oc & " Clients online.")
    Else
    MsgBox(64,"Information","Anscheinend sind alle Clients offline.")
    $Limit = $Limit +1 ; Erhöhe den Limit-Wert um 1, da kein Client online ist
    EndIf

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

    $oc = 0 ; Setze den Zähler der Online-Clients wieder auf Null

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

    Sleep(900000) ; warte 15 Minuten, danach beginne die Schleife erneut
    WEnd
    ; MsgBox(64,"Information","Der Server wird heruntergefahren.")
    _FileWriteLog($logpfad, $logeintrag)
    ; Shutdown-Anweisung noch nicht eingebaut, da sie erst am Schluß (bei Fertigstellung) des Skriptes benötigt wird

    [/autoit]

    Anbei nochmal "DANKE an Higggiii", dass er mir mit der Ausgabe in eine Datei geholfen hat.

    MfG

    2 Mal editiert, zuletzt von Rudi1982 (19. Juni 2010 um 14:08)

  • Sorry, war ein copy and paste-Fehler, in meinem lokal gespeicherten Skript stimmt die #include- Anweisung natürlich.....

    Aber kann ich es noch irgendwie verbessern, oder verkürzen? Denn ich denke sicher nicht, dass es optimal gescriptet ist....

    MfG

    Edit: PS. Kann ich irgendwie die Ip-Adressen von meinem lokalen DHCP-Server hernehmen, oder ist meine gescriptete Variante die einzig mögliche?