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
frage zu ping- shutdown
-
- [ gelöst ]
-
xsibit666 -
22. Juli 2013 um 07:42 -
Geschlossen -
Erledigt
-
-
Markiere in Scite mal eine Zeile und drücke Alt+D.
-
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"]
[/autoit]
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
WEndso 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?
Sorry, nur ein kleiner Scherz auf deine Kosten...Die If/Then Abfrage muß natürlich so aussehen:
[autoit]If $bAwake = False Then
[/autoit]
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
Das Skript selber habe ich nicht getestet, aber es sieht beinahe so aus, als könnte es funktionierenSanfte Grüße
-
ich habe es jetzt etwas umformuliert nur will er trotzdem gleich wieder zum false teil gehen obwol der ping erfolgreich sein muss erkennt er dies nicht
-
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"]
[/autoit] [autoit][/autoit] [autoit]
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
nextif $bAwake = False then
[/autoit]
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
WEndWenn 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]
[/autoit]
Run(@ComSpec & " /c net stop twonkymedia")
; bzw.
Run(@ComSpec & " /c net start twonkymedia") -
das ist eine seperate datei die vorm shutdown ausgefürt wird
-
[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 ?
-
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 -