WaitForProcessEnding wartet auf TimeOut obwohl Prozess beendet ist

WolleKette
Beiträge: 61
Registriert: 12 Nov 2013, 15:19

WaitForProcessEnding wartet auf TimeOut obwohl Prozess beendet ist

Beitrag von WolleKette »

Hallo,

in einem meiner Skripte starte ich eine Winbatch Sektion mit der Option /WaitForProcessEnding, wobei ich auf das Ende von java.exe warte.
Das Logfile zeigt, dass das Ende des Prozesses auch erkannt wird, winst aber trotzdem auf den TimeOut wartet. Wenn keiner angegeben ist, dann wartet er eben auf den Default, und das dauert.

Es handelt sich um eine Skript, das schon seit langem problemlos läuft. Mir ist es erst jetzt aufgefallen als ich eine neue Version des Pakets erzeugen wollte. Vielleicht hängt es mit den Updates von Winst in der letzten Zeit zusammen.

Hier ein Auszug aus dem Log:
[Sep 18 08:48:30:602] Execution of Winbatch_install
[Sep 18 08:48:30:603] Call ""\\LNX1\opsi_depot\__Stage\Oracle\Client_12.1.0.2\x32\setup.exe" -silent -nowait -force -responseFile "C:\tmp\client_install.rsp""
[Sep 18 08:48:30:603] Timeout 300 seconds
[Sep 18 08:48:30:603] Waiting until process "java.exe" started and has ended
[Sep 18 08:48:30:605] Start process as invoker: SYSTEM
[Sep 18 08:48:31:008] Waiting for start of "java.exe"
[Sep 18 08:48:52:120] Waiting for process "java.exe" ending
[Sep 18 08:51:27:343] Process "java.exe" ended
[Sep 18 08:53:31:400] Error: Timeout: Waited for the end of started process" - but time out reached after 300 sec.
Hier der Aufruf:

Code: Alles auswählen

Winbatch_install /WaitForProcessEnding "java.exe" /TimeOutSeconds 300
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: WaitForProcessEnding wartet auf TimeOut obwohl Prozess beendet ist

Beitrag von n.wenselowski »

Hallo,

welche Version des opsi-winst wird verwendet?


Gruß

Niko

Code: Alles auswählen

import OPSI
WolleKette
Beiträge: 61
Registriert: 12 Nov 2013, 15:19

Re: WaitForProcessEnding wartet auf TimeOut obwohl Prozess beendet ist

Beitrag von WolleKette »

Version 4.11.5.13.
Immer schön per OPSI automatisch aktualisiert :)
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Re: WaitForProcessEnding wartet auf TimeOut obwohl Prozess beendet ist

Beitrag von Simon09 »

Ich klinke mich hier mal ein: Verstehe ich das richtig, dass WaitForProcessEnding nur als Schalter hinter z.B. einer WinBatch Sektion gesetzt werden kann? Gleiches gilt für /WaitSeconds? Laut Anleitung sieht es jedenfalls so aus.

Wie realisiere ich es dass ich diese beiden Funktionen nutzen kann ohne diese von einer Winbatch Sektion abhängig zu machen? Mir geht es einfach darum dass ich Opsi mitteilen kann dass er das Script einfach weiterabarbeitet wenn ein bestimmter Prozess beendet ist.

Einfach im Script ein /WaitForProcessEnding "test.exe" setzen führt zu einem Syntax Error:
(Syntax Error in Section: Actions (Command in line 27 origin: p:\test\update.ins line: 28): /WaitForProcessEnding -> undefined)

Danke!
WolleKette
Beiträge: 61
Registriert: 12 Nov 2013, 15:19

Re: WaitForProcessEnding wartet auf TimeOut obwohl Prozess beendet ist

Beitrag von WolleKette »

Hallo,

Meinst du mit " Mir geht es einfach darum dass ich Opsi mitteilen kann dass er das Script einfach weiterabarbeitet wenn ein bestimmter Prozess beendet ist." dass du die Verarbeitung des Scripts (also der primären Sektion) anhalten möchtest, falls ein bestimmter Prozess läuft und es erst weiter geht, wenn dieser beendet ist? Also so eine Art WarteBisProzessFertigFallsDieserLäuft?

Meiner Meinung nach gibt es so was in OPSI nicht.

Ich würde so was vielleicht mit einer Kombination aus einer ExecWith-Section und AutoIt versuchen. Im Beispiel wird ExecWith_autoit_WaitForProcess mit AutoIt3 aufgerufen. Dieses Script wartet maximal 10s bis ein Prozess "notepad.exe" beendet wird. Falls kein entsprechender Prozess existiert, geht's gleich weiter. AutoIt3 muss natürlich vorhanden sein. Z. B. einfach die Exe in das Script Verzeichnis kopieren.
Im Handbuch sowie in opsi-winst-test gibt's noch mehr Beispiele zu AutoIt.

Code: Alles auswählen

...
; Start von AutoIt und warte, bis fertig
ExecWith_autoit_WaitForProcess "%ScriptPath%\autoit3.exe"
...

; Wartet maximal 10s 
[ExecWith_autoit_WaitForProcess]
ProcessWaitClose("notepad.exe", 10)
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Re: WaitForProcessEnding wartet auf TimeOut obwohl Prozess beendet ist

Beitrag von Simon09 »

Hallo,

danke für dein Feedback. Ja von der Grundfunktion her meine ich genau das. Ich hatte es jetzt so gelöst, dass ich in einer Winbatch Sektion eine dummy.exe starte, welche mit AutoIT geschrieben ist und sich von alleine schließt, wenn der Prozess, um den es mir eigentlich geht, geschlossen ist.

Dann habe ich in Opsi:

Code: Alles auswählen

Winbatch_dummy /WaitForProcessEnding "dummy.exe" /TimeOutSeconds 600 

[Winbatch_dummy]
"%scriptpath%\dummy.exe" 
Mein Problem ist nun: Das ganze soll direkt nach einem Reboot ausgeführt werden, und es scheint mir so, als lässt der Opsi Client den PC nicht hochfahren sondern wartet den Timeout ab... Allerdings funktioniert das ganze Konzept nur wenn der Timeout quasi im Hintergrund läuft und der PC trotzdem erstmal komplett hochfährt. Ich hatte noch ein /LetThemGo hinzugefügt aber auch das hat keine Änderung gebracht.

Warum bootet das System nicht weiter?
WolleKette
Beiträge: 61
Registriert: 12 Nov 2013, 15:19

Re: WaitForProcessEnding wartet auf TimeOut obwohl Prozess beendet ist

Beitrag von WolleKette »

Hallo,
Das ganze soll direkt nach einem Reboot ausgeführt werden, und es scheint mir so, als lässt der Opsi Client den PC nicht hochfahren sondern wartet den Timeout ab... Allerdings funktioniert das ganze Konzept nur wenn der Timeout quasi im Hintergrund läuft und der PC trotzdem erstmal komplett hochfährt.
OPSI Scripte werden in der Regel doch sowieso direkt nach einem Reboot ausgeführt. Außer man startet sie on_demand. Und der OPSI Client verhindert dann auch nicht das "hochfahren" des Rechners sondern lediglich die Anmeldung eines Benutzers. Und zwar solange, bis alle Scripte ausgeführt sind. Wenn du also in deinem Script auf irgendwas wartest, dann läuft auch der opsi-winst solange. Und folglich ist auch solange keine Anmeldung möglich.

Was willst du denn eigentlich machen?
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Re: WaitForProcessEnding wartet auf TimeOut obwohl Prozess beendet ist

Beitrag von Simon09 »

Danke, mir war in dem Zusammenhang nicht bewusst dass es den gesamten Ablauf in dem Moment "blockiert". Ich habe es nun mit AutoIT lösen können. Mir fehlt nun nur noch eine Möglichkeit, dem Opsi Script nach Beendigung eine Info mitzugeben. (Auto IT installiert in der Zwischenzeit ein Programm, welches ich nicht über Opsi installieren kann, da es als lokaler Admin ausgeführt werden muss).

Das update Script ist also dann im configuration editor als "success" gelistet, obwohl es erst anschließend von Auto-IT durchgeführt wird und man so via opsi nicht weiß ob es wirklich abgeschlossen ist. Wie schleift man hinten raus am besten ein Feedback in Opsi ein?
WolleKette
Beiträge: 61
Registriert: 12 Nov 2013, 15:19

Re: WaitForProcessEnding wartet auf TimeOut obwohl Prozess beendet ist

Beitrag von WolleKette »

Entschuldige bitte, aber das hört sich alles sehr, äh, komisch an. Warum muss dein Setup als lokaler Administrator ausgeführt werden?

Benötigt es irgendwelche speziellen Rechte während des Setups? Die hat OPSI sowieso.
Schreibt es irgendwas ins Benutzerprofil? Könnte man mit einer Files- oder Registry-Section regeln.
Verlangt das Setup das? Hatte ich bisher noch nicht, aber falls doch, siehe opsi-winst Handbuch 11.3. Skript für Installationen im Kontext eines lokalen Administrators. Ist aber ziemlich aufwendig.
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Re: WaitForProcessEnding wartet auf TimeOut obwohl Prozess beendet ist

Beitrag von Simon09 »

Weil im Zuge des Setups Netzlaufwerke verbunden sein müssen was nur der Fall ist wenn es lokal vom Administrator ausgeführt wird, "admin rechte" reichen mir da also nicht...
Antworten