Erkennung/Unterscheidung von Shutdown und Bootvorgang möglich?

andré
Beiträge: 329
Registriert: 07 Jan 2014, 10:48

Erkennung/Unterscheidung von Shutdown und Bootvorgang möglich?

Beitrag von andré »

Hallo,
ich habe das Problem, dass bei vielen Rechnern bei uns WoL nicht oder nicht korrekt funktioniert und daher der wöchentliche Virenscan nachts nicht durchgeführt werden kann.
Daher dachte ich mir, ich baue ein Opsi-Paket, was diese Suche manuell ausführt. Das Paket würde dann auf always stehen und innerhalb des Skriptes wird auf Uhrzeit und Datum geprüft. Wird der Rechner Donnerstag zwischen 15 und 22 Uhr heruntergefahren, startet die Suche.

Jetzt habe ich das Problem, dass bei einem Rechnerstart in dieser Zeit natürlich auch ein Scan angestoßen würde, was nicht gewollt ist.
Gibt es da eine Möglichkeit, zu erkennen, ob Opsi beim Booten oder beim Shutdown gestartet wird?
Einfachste Möglichkeit für meine Begriffe wäre, wenn die opsiclient_shutdown_starter.exe eine entsprechende Variable setzt, wenn Opsi durch sie gestartet wird.

Ich hatte dieses Skript als Batchdatei über die Registry in den Shutdownprozess eingebunden, so wie es die on_shutdown_install Funktion von Opsi auch macht. Problem dabei war nur, dass dieses Skript teilweise einfach abgebrochen wurde und dass man nicht sieht, warum Windows so lange benötigt um herunterzufahren.

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

Re: Erkennung/Unterscheidung von Shutdown und Bootvorgang möglich?

Beitrag von n.wenselowski »

Hi,

ungetestete Idee: die Methode isEventRunning am Client zu nutzen um zu prüfen, ob gerade das gewünschte Event aktiv ist.


Viele Grüße

Niko

Code: Alles auswählen

import OPSI
andré
Beiträge: 329
Registriert: 07 Jan 2014, 10:48

Re: Erkennung/Unterscheidung von Shutdown und Bootvorgang möglich?

Beitrag von andré »

Hm, da muss ich mich mal näher dazu einlesen. Soweit ich das im Handbuch nachvollziehen konnte, nützt mir ja höchstens das custom-Event was, wenn ich damit entsprechende WQL-Ereignisse für Shutdown, Boot und Reboot auslese...

Mal schauen. Danke erstmal für die Anregung.
andré
Beiträge: 329
Registriert: 07 Jan 2014, 10:48

Re: Erkennung/Unterscheidung von Shutdown und Bootvorgang möglich?

Beitrag von andré »

Ich habe mal versucht die Methode "isEventRunning" mittels eines opsiservicecalls mit leerer Parameterliste aufzurufen, dabei bekomme ich aber nur eine Meldung, dass die Methode nicht gültig sei.

Hat das was mit dem Satz im Handbuch zu tun: "Die opsiservicecall Sektionen sind für opsi 3.x Methoden entwickelt worden und für die opsi 4.x Methoden häufig nicht verwendbar."?

Edit: Der Vollständigkeit halber mal die entsprechenden Aufrufe im Skript:

Code: Alles auswählen

set $list1$ = getReturnListFromSection("opsiservicecall_Shutdown_Detection")

[opsiservicecall_Shutdown_Detection]
"method":"isEventRunning"
"params":[]

Code: Alles auswählen

(144)     [5] [Aug 09 13:01:17:527] [kaspersky-scan]   Execution of opsiservicecall_Shutdown_Detection
(145)     [6] [Aug 09 13:01:17:527] [kaspersky-scan]      "method": "isEventRunning"
(146)     [6] [Aug 09 13:01:17:527] [kaspersky-scan]   Calling opsi service at https://172.16.0.30:4447
(147)     [6] [Aug 09 13:01:17:527] [kaspersky-scan]   JSON service request https://172.16.0.30:4447/rpc isEventRunning
(148)     [6] [Aug 09 13:01:17:577] [kaspersky-scan]   JSON Bench for isEventRunning "params":[],"id":1} Start: 13:01:17:527 Time: 00:00:00:050
(149)     [3] [Aug 09 13:01:17:631] [kaspersky-scan]   Error: retrieveJSONObject --- opsi service problem ----> {"message":"Opsi rpc error: Method 'isEventRunning' is not valid","class":"OpsiRpcError"}
(150)     [3] [Aug 09 13:01:17:631] [kaspersky-scan]   Received (first 512): {"id": 1, "result": null, "error": {"message": "Opsi rpc error: Method 'isEventRunning' is not valid", "class": "OpsiRpcError"}}                         
(151)     [3] [Aug 09 13:01:17:631] [kaspersky-scan]   Error: -> {"message":"Opsi rpc error: Method 'isEventRunning' is not valid","class":"OpsiRpcError"}
(152)     [6] [Aug 09 13:01:17:632] [kaspersky-scan]     retrieving strings from getReturnListFromSection [switch to loglevel 7 for debugging]
Benutzeravatar
ueluekmen
uib-Team
Beiträge: 1940
Registriert: 28 Mai 2008, 10:53

Re: Erkennung/Unterscheidung von Shutdown und Bootvorgang möglich?

Beitrag von ueluekmen »

Hi,

kleines Missverständnis. Du kannst die Abfrage nicht über den opsi-Server machen, sondern du musst die Abfrage in an den Webservice vom Client schicken.


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


andré
Beiträge: 329
Registriert: 07 Jan 2014, 10:48

Re: Erkennung/Unterscheidung von Shutdown und Bootvorgang möglich?

Beitrag von andré »

Danke für den Hinweis, damit habe ich verstanden, wie die Abfrage funktioniert. Es hat beim opsiservicecall einfach der Parameter opsiclientd gefehlt. Ich kann jetzt erfolgreich abfragen, ob der Rechner gerade herunterfährt und dementsprechend das Skript beenden oder fortsetzen. Ich hatte Probleme dabei, die richtigen Parameter für die Methode isEventRunning zu finden. Ich habe dann im Handbuch den Hinweis auf die Info-Seite gelesen (https://Adresse-des-Clients:4441/info.html) und darüber habe ich dann das Event herausgefunden. Ich habe es als Parameter erst reboot und shutdown probiert, bis ich verstanden habe, dass das nur die Konfigurationsoptionen für die Events sind. Der benötigte Parameter lautet on_shutdown. Den Shutdown erkenne ich damit, nur den Reboot kann ich damit leider nicht unterscheiden.

Ein Problem mit der Infoseite habe ich: Ich kann diese nicht auf jedem Client öffnen. Ich verwende den Nutzer admin, der funktioniert auch nachweislich auf einer meiner Testmaschinen. Auf der nächsten funktioniert der wiederum nicht. Es werden nach dem Eingeben einfach die Zugangsdaten aus dem Loginfenster gelöscht.

Ich habe ein Property erstellt, damit ich die Abfrage nach dem Shutdown auch abschalten kann. Falls jemand Interesse an meiner Umsetzung hat, habe ich unten die entsprechenden Teile des Skripts hinzugefügt.

Code: Alles auswählen

DefVar $ServiceCallList$
DefVar $ShutdownDetection$
DefVar $Installationsmodus$

Set $Installationsmodus$ = GetProductProperty("Such-Modus","Beim Shutdown")

if ($Installationsmodus$ = "Beim Shutdown")
	set $ServiceCallList$ = getReturnListFromSection("opsiservicecall_Shutdown_Detection /opsiclientd")
	set $ShutdownDetection$ = takeString(0, $ServiceCallList$)
endif
if ($Installationsmodus$ = "Immer")
	Set $ShutdownDetection$ = "true"
endif

if ($ShutdownDetection$ = "true")
	Alle Anweisungen für die Virensuche
else
	Comment "Kein Shutdown, daher wird keine Virensuche durchgefuehrt."
endif


[opsiservicecall_Shutdown_Detection]
"method":"isEventRunning"
"params":[
			'on_shutdown',
			]
Benutzeravatar
ueluekmen
uib-Team
Beiträge: 1940
Registriert: 28 Mai 2008, 10:53

Re: Erkennung/Unterscheidung von Shutdown und Bootvorgang möglich?

Beitrag von ueluekmen »

Das klingt doch erst mal gut.
andré hat geschrieben:Ein Problem mit der Infoseite habe ich: Ich kann diese nicht auf jedem Client öffnen. Ich verwende den Nutzer admin, der funktioniert auch nachweislich auf einer meiner Testmaschinen. Auf der nächsten funktioniert der wiederum nicht. Es werden nach dem Eingeben einfach die Zugangsdaten aus dem Loginfenster gelöscht.
Das ist in soweit normal, mit admin meinst du wahrscheinlich einen opsiadmin. Das funktioniert nicht. Entweder du loggst dich mit fqdn vom client als user und opsi-Hostkey vom Client als Passwort ein oder du kannst einen User nehmen, der Mitglied in der lokalen Administratoren Gruppe ist. Alles andere funktioniert nicht, auch Domainadmins gehen hier nicht.


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


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

Re: Erkennung/Unterscheidung von Shutdown und Bootvorgang möglich?

Beitrag von n.wenselowski »

Hi andré,

freut mich, dass du ein Ergebnis hast!
andré hat geschrieben:Den Shutdown erkenne ich damit, nur den Reboot kann ich damit leider nicht unterscheiden.
Mir ist auch nichts bekannt, wie man das ordentlich unterscheiden kann. Es sieht leider beides gleich aus.


Viele Grüße

Niko

Code: Alles auswählen

import OPSI
andré
Beiträge: 329
Registriert: 07 Jan 2014, 10:48

Re: Erkennung/Unterscheidung von Shutdown und Bootvorgang möglich?

Beitrag von andré »

ueluekmen hat geschrieben:Das ist in soweit normal, mit admin meinst du wahrscheinlich einen opsiadmin. Das funktioniert nicht. Entweder du loggst dich mit fqdn vom client als user und opsi-Hostkey vom Client als Passwort ein oder du kannst einen User nehmen, der Mitglied in der lokalen Administratoren Gruppe ist. Alles andere funktioniert nicht, auch Domainadmins gehen hier nicht.
Genau, ich bin davon ausgegangen, dass ich einen der opsi-Administratorenaccounts nutzen kann. Wenn ich einen lokalen Account nehmen muss, weiß ich Bescheid, dann passt das.
n.wenselowski hat geschrieben:Mir ist auch nichts bekannt, wie man das ordentlich unterscheiden kann. Es sieht leider beides gleich aus.
Das ist schade, aber alleine die Tatsache, dass ich das Paket beim normalen Boot nicht ausführen lassen kann, hilft schon extrem viel.

Danke euch für die Hilfe!
s.kirch
Beiträge: 10
Registriert: 24 Feb 2016, 15:45

Re: Erkennung/Unterscheidung von Shutdown und Bootvorgang möglich?

Beitrag von s.kirch »

Hallo,

auf der suche nach einemn weg abzufragen welches Event gerade ausgeführt wird bin ich auf diese Lösung gestoßen.
Anstatt des shutdown Events möchte ich gerne entweder on_demand und gui_startup abfragen oder alternativ einen von mir erstelltes timer event.

Wenn ich die Abfrage aber z.B. auf on_demand ummodele, bekomme ich immer false geliefert obwohl ich das Testpaket per on_demand ausführe.
Hat jemand eine Ahnung was ich falschmache?

Code: Alles auswählen

[opsiservicecall_OnDemand_Detection]
"method":"isEventRunning"
"params":[
'on_demand',
]
Antworten