Paket automatisch nach bestimmter Zeit erneut anfordern möglich?

Antworten
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Paket automatisch nach bestimmter Zeit erneut anfordern möglich?

Beitrag von Simon09 »

Hallo Forum,

meine Ausgangslage ist die, dass ich via Opsi sämtliche Pakete/Installationen auf diversen Servern ausführe, wovon eines jedoch ein umfangreiches AutoIT Script aus dem Autostart heraus ist welches natürlich nur ausgeführt wird, wenn Opsi bereits die Anmeldung freigibt. (der Part der im Autostart liegt lässt sich nicht direkt via Opsi umsetzen, aufgrund der Problematik das ein lokaler Admin angemeldet sein muss, "Admin Rechte" via Opsi reichen mir in dem Falle nicht und sind nicht zielführend, ebenso nicht das opsi-template-with-admin, bei dem ein Benutzer temporär erzeugt wird).

Mein "Problem" daran ist, dass ich natürlich über die Opsi Webübersicht keinerlei Feedback auslesen kann und der Autostartaufruf grundsätzlich als "success" gelistet wird, da wie gesagt ja der Autostart nur ausgeführt wird wenn Opsi fertig ist und success sich nur auf den copy in den Autostart bezieht.

Mein Gedanke dazu wäre, dass ich Opsi automatisch eine bestimmte Zeit später nochmals starte und ein Paket ausführe, welches die entsprechenden Logdateien ausließt und in Abhängigkeit des Inhalts ein Feedback (success, error code etc) in der Opsi Webübersicht anzeigbar gemacht wird.

Wäre dies grundsätzlich möglich? Ich weiß aus der Doku dass ich bestimmte Textdateien nach Inhalten durchsuchen kann usw, der Part der Umsetzung sollte also kein Problem sein. Meine Frage ist eher ob ich wenn ich z.B. um 4 Uhr nachts Pakete ausführe die ich angefordert habe, dafür sorgen kannn, das um 6 Uhr ein bestimmtes Paket erneut ausgeführt wird.

Danke!
Benutzeravatar
ueluekmen
uib-Team
Beiträge: 1939
Registriert: 28 Mai 2008, 10:53

Re: Paket automatisch nach bestimmter Zeit erneut anfordern möglich?

Beitrag von ueluekmen »

Hi,

hast du mal /RunElevated beim Winbatch probiert? In Kombination mit ChangeDirectory wirkt das bei so Problemkindern manchmal wunder. Wenn es wirklich nicht anders geht und ich dein Problem richtig verstehe, solltest du versuchen das Skript als userlogin-Skript laufen zu lassen. Hier kann man mit Mechanismen auch dafür sorgen, dass diese Skripte nur dann laufen, wenn Sie noch nicht gelaufen sind. Wie das geht ist in der Doku ganz gut beschrieben.
opsi support - uib gmbh
For productive opsi installations we recommend support contracts.
http://www.uib.de
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Re: Paket automatisch nach bestimmter Zeit erneut anfordern möglich?

Beitrag von Simon09 »

Hi,

danke für das flotte Feedback, ja ich hatte natürlich auch /RunElevated probiert.

Verstehe ich das richtig, dass Scripte die als userlogin-Skript laufen erst nach der Anmeldung ausgeführt werden und somit das Problem, dass der Autostart nicht während (sondern erst nach) einer Opsiroutine ausgeführt werden kann obsolet wäre? Das wäre schon super und würde mich auf den richtigen Weg bringen.
Benutzeravatar
ueluekmen
uib-Team
Beiträge: 1939
Registriert: 28 Mai 2008, 10:53

Re: Paket automatisch nach bestimmter Zeit erneut anfordern möglich?

Beitrag von ueluekmen »

genau so ist es gedacht. ;)

Userlogin hat noch andere Besonderheiten, aber einen Versuch ist es allemal Wert, da das Modul auch frei verfügbar ist. Ansonsten kann man auch über scheduled tasks auf dem Client arbeiten.
opsi support - uib gmbh
For productive opsi installations we recommend support contracts.
http://www.uib.de
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Paket automatisch nach bestimmter Zeit erneut anfordern möglich?

Beitrag von n.wenselowski »

Hi,

Alternative Idee: arbeiten mit einem Custom Event, welches ein entsprechendes include_product_group_ids gesetzt hat und welches du regelmäßig triggerst.
Simon09 hat geschrieben:Mein "Problem" daran ist, dass ich natürlich über die Opsi Webübersicht keinerlei Feedback auslesen kann und der Autostartaufruf grundsätzlich als "success" gelistet wird, da wie gesagt ja der Autostart nur ausgeführt wird wenn Opsi fertig ist und success sich nur auf den copy in den Autostart bezieht.
Du könntest auch über einen opsiServiceCall einen custom Status setzen. 8-)


Hier führen wieder viele Wege nach Rom ;)


Gruß

Niko

Code: Alles auswählen

import OPSI
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Re: Paket automatisch nach bestimmter Zeit erneut anfordern möglich?

Beitrag von Simon09 »

Ist das Modul User Profile Management bei der Opsi Version 4.0.6.46.1 schon standardmäßig aktiviert?

Ich habe versucht mir die installierten Module wie hier:

http://download.uib.de/opsi_stable/doc/ ... al-modules

im Handbuch beschrieben anzeigen zu lassen. Jedoch bekomme ich sowohl über backend-info als auch über opsi-configed nur ein "valid: false" ausgegeben, wodurch ich nun nicht wirklich kontrollieren kann, ob das Modul aktiv ist.

Das Ausführen des Scripts als UserLoginScript ist mir jetzt trotz des Handbuches nicht 100%tig klar geworden: Ist es richtig dass es im Prinzip reicht, das Script einfach in dem jeweiligen Paket in der control unter userLoginScript: script.ins zu hinterlegen?
Ich lese in dem Zusammenhang immer von Aufrufparametern wie z.B. /loginscripts, wo und wann muss ich diesen Schalter denn setzen?
Ich weiß mittlerweile dass es ein Kommandozeilen Parameter ist, allerdings soll dieser ja dauerhaft dem Paket zugeordnet bleiben bzw. seine Gültigkeit beibehalten. Wie lautet da die Zeile die ich unter Linux setzen muss? So wie ich das Handbuch verstehe müsste ich nach Eingabe von opsi-script -help auch eine Ausgabe sehen (nach dem Prinzip stelle ich mir den Parameter -loginscripts vor), aber das funktioniert nicht. Ich denke ich bin da auf dem Holzweg.

Ich muss im Prinzip ja garnichts wildes mit dem Userlogin anstellen, es muss soweit ich das verstehe nichts Userspezifisches konfiguriert oder mitgegeben werden. Das Script um welches es dann in dem Moment geht wäre eigentlich nichts anderes als ein WaitforProcessEnding was erstmal nur wartet bis die .exe aus dem Autostart fertig ist und am Ende aus einer Logfile einen String suchen und bei entsprechendem Erfolg dann ein success an Opsi zurück zu geben und sonst ein Fail. Das wäre so das Gesamtkonzept :roll:

Danke!
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Paket automatisch nach bestimmter Zeit erneut anfordern möglich?

Beitrag von n.wenselowski »

Hi,
Simon09 hat geschrieben:Ist das Modul User Profile Management bei der Opsi Version 4.0.6.46.1 schon standardmäßig aktiviert?
Ja. (Aktuell ist 4.0.7 *husthust*)
Die Prüfung kannst du dir für diesen Fall sparen.
Simon09 hat geschrieben:Das Ausführen des Scripts als UserLoginScript ist mir jetzt trotz des Handbuches nicht 100%tig klar geworden: Ist es richtig dass es im Prinzip reicht, das Script einfach in dem jeweiligen Paket in der control unter userLoginScript: script.ins zu hinterlegen?
Ja, Script eintragen und das entsprechende Script ablegen (idR einfach unter CLIENT_DATA), dann Paket neu packen und einspielen. Das ganze auf deinem Test-Client auf setup stellen.
Simon09 hat geschrieben:Ich lese in dem Zusammenhang immer von Aufrufparametern wie z.B. /loginscripts, wo und wann muss ich diesen Schalter denn setzen?
Den kannst du setzen, aber musst du erstmal nicht. Wichtiger ist das Event zu aktivieren.
Globales Anlegen der Schalter für das Event:

Code: Alles auswählen

opsi-admin -d method config_createBool opsiclientd.event_user_login.active "user_login active" false
Dann deinen Testclient auswählen -> Host-Parameter -> opsiclientd.event_user_login.active auf True stellen. Client neu starten und voila.


Gruß

Niko

Code: Alles auswählen

import OPSI
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Re: Paket automatisch nach bestimmter Zeit erneut anfordern möglich?

Beitrag von Simon09 »

Danke Nico, das hat soweit super funktioniert.

Das der "report" bei den Produktkonfigurationen des Clients schon auf success steht, bevor das userLoginScript durchgelaufen ist, ist normal? Mein nächster Schritt wäre ja nun dem userLoginScript die Aufgabe mitzugeben einen String aus einer Login.txt Datei auf dem Windows System zu catchen und von deren Abhängigkeit den Report in der Übersicht auf success oder failed zu setzen. Dieses Vorhaben scheint soweit ich das Handbuch verstanden habe möglich, (Stichwörter PatchTextFile, FindLine, if-Abfrage mit isFatalError Zweig)... allerdings fehlt mir in Opsi Winst die Möglichkeit, das aktuelle Datum als String verfügbar zu machen. Gibt es dafür keine Konstante oder habe ich das übersehen?

Noch eine kleine Anmerkung: Ich hatte das userLoginScript nun mit einem einfachen copy paste befehl einer Files Section getestet mit zuvohrigem Timeout von 180 Sekunden. Auf dem Client bleibt das Fenster vom opsi notifier mit der Meldung (sinngemäß) "Verarbeite Benutzer Anmelde-Aktionen" aber länger bestehen als das Script läuft, und muss dann händisch geschlossen werden. Ist dies zu verhindern?

edit: Wenn ich nun im userlogin-Script folgendes einfüge, bleibt der Report trotzdem auf success (hängt vllt mit dem Verhalten siehe oben zusammen, dass es sowieso schon als success gelistet wird obwohl das userlogin Script noch ansteht):

Code: Alles auswählen

if LineBeginning_ExistsIn("nichtvorhandenerstring", $logfilepath$)
else
logError "Provozierter Testerror"
isFatalError "Testerror"
endif
Im Log hab ich in dem Test auch den gewünschten Fatal Error stehen.
Was mache ich falsch?
Simon09
Beiträge: 21
Registriert: 13 Aug 2015, 12:22

Re: Paket automatisch nach bestimmter Zeit erneut anfordern möglich?

Beitrag von Simon09 »

Hat niemand eine Info? Lässt sich der report über ein userlogin script nicht setzen? Wie sieht dann eine Realisierung über einen opsiservicecall einen custom status aus dem Script heraus zu setzen aus?
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Paket automatisch nach bestimmter Zeit erneut anfordern möglich?

Beitrag von n.wenselowski »

Hi,
Simon09 hat geschrieben:Das der "report" bei den Produktkonfigurationen des Clients schon auf success steht, bevor das userLoginScript durchgelaufen ist, ist normal?
Ja und ich glaube hier ist gerade das Verständnisproblem: der Report ist für die Installation und nicht für die Ausführung des Loginscripts.
Simon09 hat geschrieben:Lässt sich der report über ein userlogin script nicht setzen?
Doch, mit einem opsiServiceCall ;)
Aber es ist eben nicht das Standard-Verhalten.
Simon09 hat geschrieben:Wie sieht dann eine Realisierung über einen opsiservicecall einen custom status aus dem Script heraus zu setzen aus?
Zu opsiservicecall bitte ins opsiscript-Handbuch schauen, da dort auch eine Reihe von Beispielen sind.
Background zu den Methoden findest du im Handbuch.
Der Report gehört zu productOnClient und kann über entsprechende Updates gesetzt werden.


Gruß

Niko

Code: Alles auswählen

import OPSI
Antworten