PC prüfen ( ping )

  • Hallo,


    undzwar such ich jemanden der mir ein Programm schreibt wo jede 2-3 min die eingegebenen IPs prüft, wenn alle nicht erreichbar sind, soll der einige PC dann runterfahren..

    Also man gibt XXX Ips ein und dass Programm prüft alle Ips ob die via Ping erreichbar sind, wenn ja dann soll er in 2-3 min weiter prüfen wenn alle off, dann soll der PC runterfahren.

    Biete 10 PSC oder 10 in BAR ( überweißung etc ) oder wenn einer so nett ist für free ...


    So solln ca aussehen :

    // danke Monkey ! //

    [autoit]

    Opt("GuiOnEventMode", 1)
    #include<guiconstants.au3>
    #include<array.au3>
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 579, 170, 192, 124)
    GUISetOnEvent(-3, "_exit")
    $Button1 = GUICtrlCreateButton("Abbrechen", 416, 104, 113, 49)
    $Button2 = GUICtrlCreateButton("GO", 416, 16, 113, 49)
    GUICtrlSetOnEvent(-1, "_go")
    $Edit1 = GUICtrlCreateEdit("", 24, 16, 361, 129)
    GUICtrlSetData(-1, "")
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###
    $iStart = 0

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

    While Sleep(100)
    $aIP = StringSplit(GUICtrlRead($Edit1), @LF)
    While $iStart = 1
    $iCounter=0
    For $i = 1 To $aIP[0]
    If Ping($aIP[$i], 250) = 0 Then $iCounter += 1
    Sleep(100)
    Next
    if $iCounter=$aIP[0] then Exit Shutdown(1, "", "Shutdown") ;
    Sleep(180000)
    WEnd

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

    WEnd

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

    Func _go()
    $iStart = 1
    EndFunc ;==>_go

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

    Func _stop()
    $iStart = 0
    EndFunc ;==>_stop

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]

    *Edd*
    Leider klappt der Script nicht ganz, wenn ich Ips eingebe die "aktiv" sind kommt trotzdem shutdown ... ( sollte aber weiter prüfen bis offline )

    Wär gut wenn man vllt noch ein Fenster macht wo die offline / online Ips dann angezeigt werden


    Vielen DANK


    Eldas

    2 Mal editiert, zuletzt von Eldas (21. September 2010 um 18:25)

  • Spoiler anzeigen
    [autoit]

    Local $check=False, $time=0.5
    $hGUI = GUICreate("GUINAME", 277, 438, 192, 124)
    GUICtrlCreateLabel("Ip's (bitte durch einen Zeilenumbruch trennen)", 16, 16, 220, 17)
    $ipEdit = GUICtrlCreateEdit("", 16, 48, 217, 313, BitOR(64, 4096, 0x00200000))
    $start = GUICtrlCreateButton("Starten", 16, 384, 75, 25)
    $stop = GUICtrlCreateButton("Anhalten", 160, 384, 75, 25)
    GUICtrlSetState(-1, 128)
    GUISetState()
    $hTimer=TimerInit()
    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $start
    If GUICtrlRead($ipEdit)<>'' Then
    $check=True
    GUICtrlSetState($start, 128)
    GUICtrlSetState($stop, 64)
    Else
    MsgBox(16, "Fehler", "Bitte gebe erst IP's ein.")
    EndIf
    Case $stop
    $check=False
    GUICtrlSetState($start, 64)
    GUICtrlSetState($stop, 128)
    EndSwitch
    If TimerDiff($hTimer)>= $time*60000 And $check Then checkIp()
    WEnd
    Func checkIP()
    Local $offline
    $IP=StringSplit(GUICtrlRead($ipEdit), @LF)
    For $i=1 to $IP[0]
    If Not Ping($IP[$i]) Then $offline+=1
    Next
    If $offline=$IP[0] Then Shutdown(1)
    $hTimer=TimerInit()
    EndFunc

    [/autoit]
  • Vielen lieben dank =) Hab mich nun aber entschlossen ohne GUI Oberfläche zu machen und hab nun den Quelltext genommen :

    [autoit]

    $Datei = "test.txt"
    While 1
    $status = PingList($Datei, 10)
    If $status = 1 Then
    MsgBox(0, "Herunterfahren", "HIER EINSETZEN!");Hier Shutdown eingeben
    Exit
    EndIf
    Sleep(10)
    WEnd

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

    Func PingList($liste, $wait = 100)
    Local $a=FileOpen($liste,0),$b=FileRead($a)
    FileClose($a)
    $a = StringStripCR($b)
    $b = StringSplit($a,@LF)
    $a = 1
    If IsArray($b) = False Then Return -1
    For $i=1 To $b[0]
    If Ping($b[$i],$wait) Then $a = 0
    Next
    If $a = 1 Then Return 1
    Return 0
    EndFunc

    [/autoit]