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.....
; Skriptname: ClientCheck v1.0
; Skriptauthor: Rudi1982
; Datum: 18.06.2010
#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
$logpfad = "D:\log.log"
$logeintrag = "Der Server wird heruntergefahren"
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
$pvar = 0 ; Setze die Ping-Variable wieder auf 0
Next
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
$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
Anbei nochmal "DANKE an Higggiii", dass er mir mit der Ausgabe in eine Datei geholfen hat.
MfG