frage zu ping- shutdown

  • Kann ich in das scriptwas einfügen das ein eventlog geschrieben wird sodass ich sehe woranns scheitert?
    Denn seit heute bleibt der rechner dauer an weil das script irgendwie nix macht ausser ping wies aussieht

  • hi kann mir jmd ne frage zu dem script beantworten

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

    Global $aIP[11=["192.168.2.100","192.168.2.101","192.168.2.103","192.168.2.104","192.168.2.105","192.168.2.106","192.168.2.107","192.168.2.108","192.168.2.109","192.168.2.110"]
    Global $bAwake = True
    While 1
    Sleep (60000)
    for $i = 0 to ubound($aIP)-1
    $bAwake = False
    if ping($aIP[$i])>0 then
    $bAwake = True
    Sleep (60000)
    ExitLoop
    EndIf
    next
    if $bAwake = False then Sleep(60000)
    ShellExecute ("restart twonky server.exe")
    Sleep (3000)
    Shutdown(64); nach dem Aufwachen oder bei erfolgreichen Pings erstmal schlafen, bevor wieder geprüft wird, das lässt dir Zeit das Script zu beenden, sofern notwendig


    WEnd

    [/autoit]

    so zu meiner frage das script springt trotz ausgefürter ping zum 2ten teil if $bAwake = False then Sleep(60000)und will das script mit shutdown enden lassen und beim nächsten start das selbe ich sehe den fehler leider nicht da ich mich mit dem ersten teil nicht 100% auskenne
    hoffe einer hier kann mir helfen mfg

  • [...] das script springt trotz ausgefürter ping zum 2ten teil [...]

    Ist logisch, weil ExitLoop die For/Next Schleife verläßt.

    [...] und will das script mit shutdown enden [...]

    Ist auch logisch, weil auch im Falle von $bAwake = True nur die Anweisung Sleep(60000) nicht ausgeführt wird.
    Der Rest wird ganz normal abgearbeitet, weil es sich nicht innerhalb der If/Then Abfrage befindet.

    Du weißt schon, dass du durch bloßes Einrücken keine Schleife erzeugst? :rofl:
    Sorry, nur ein kleiner Scherz auf deine Kosten...

    Die If/Then Abfrage muß natürlich so aussehen:

    [autoit]

    If $bAwake = False Then
    Sleep(60000)
    ShellExecute("restart twonky server.exe")
    Sleep(3000)
    Shutdown(64); nach dem Aufwachen oder bei erfolgreichen Pings erstmal schlafen, bevor wieder geprüft wird, das lässt dir Zeit das Script zu beenden, sofern notwendig
    EndIf

    [/autoit]


    Das Skript selber habe ich nicht getestet, aber es sieht beinahe so aus, als könnte es funktionieren :whistling:


    Sanfte Grüße :D

  • Ich weiß jetzt nicht genau, wo es bei dir noch genau hängt.
    Ich habe dir deshalb mal deinen Code ein wenig kommentiert, vielleicht verstehst du ihn dann besser.

    Spoiler anzeigen
    [autoit]

    Global $aIP[11=["192.168.2.100","192.168.2.101","192.168.2.103","192.168.2.104","192.168.2.105","192.168.2.106","192.168.2.107","192.168.2.108","192.168.2.109","192.168.2.110"]
    Global $bAwake = True
    While 1
    Sleep (60000)
    for $i = 0 to ubound($aIP)-1 ; Durchlaufen aller Ips
    $bAwake = False
    if ping($aIP[$i]) > 0 then ; IP ist vorhanden
    $bAwake = True
    Sleep (60000)
    ExitLoop ; verlassen der for-Schleife
    EndIf
    next

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

    if $bAwake = False then
    Sleep(60000)
    ShellExecute ("restart twonky server.exe") ; Stimmt dieser Pfad?
    Sleep (3000)
    Shutdown(64); nach dem Aufwachen oder bei erfolgreichen Pings erstmal schlafen, bevor wieder geprüft wird, das lässt dir Zeit das Script zu beenden, sofern notwendig
    EndIf
    WEnd

    [/autoit]

    Wenn du noch ne Frage hast dann schieß einfach los, jeder braucht schließlich seine eigene Zeit um eine Sache zu verstehen. ;)

  • [autoit]

    ShellExecute ("restart twonky server.exe")

    [/autoit]


    Das funktioniert so ganz sicher nicht, denn Shellexecute erwartet Parameter als Funktionsparameter. Davon ab kennt Windows keinen Befehl namens "restart", kann also überhaupt nicht klappen.
    Einen Dienst beendet bzw. startet man so wie auch bereits in deinem anderen Thread beschrieben wurde:


    [autoit]


    Run(@ComSpec & " /c net stop twonkymedia")
    ; bzw.
    Run(@ComSpec & " /c net start twonkymedia")

    [/autoit]
  • [autoit]

    ShellExecute ("restart twonky server.exe")

    [/autoit]


    Das funktioniert so ganz sicher nicht, denn Shellexecute erwartet Parameter als Funktionsparameter. Davon ab kennt Windows keinen Befehl namens "restart", kann also überhaupt nicht klappen.


    Ich denke, die traurige Wahrheit ist, dass "restart twonky server.exe" eine einzige Datei mit Leerzeichen im Dateinamen ist. Ist zwar erlaubt, aber echt gruselig ;(

  • Wieso traurige warheit ? Und warum gruselig ?

    Da hab ich vieleicht ein bisschen überreagiert, sorry.
    Tatsache ist aber, dass Leerzeichen in Dateinamen und Pfaden lästig sind und nur zu Problemen führen (und auch schon mal zu Missverständnissen - siehe oben).
    Kannst ja mal nach "leerzeichen im pfad" googeln oder auch dieses Forum danach durchsuchen, dann verstehst du evtl. was ich meine.

  • Ok davon habe ich auch schon gelesen nur selb t noch keine probleme gehabt
    Das programm leuft perfekt und macht auch den ShellExecute
    Habe natürlich den kompletten pfad zum twonky restart exe angegeben
    Klapt 1 a
    Trotzdem danke für die hilfe