Seite 1 von 2

Erkennung/Unterscheidung von Shutdown und Bootvorgang möglich?

Verfasst: 04 Aug 2016, 18:58
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ß

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

Verfasst: 05 Aug 2016, 14:10
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

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

Verfasst: 05 Aug 2016, 16:44
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.

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

Verfasst: 09 Aug 2016, 13:14
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]

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

Verfasst: 09 Aug 2016, 17:24
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.

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

Verfasst: 10 Aug 2016, 15:06
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',
			]

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

Verfasst: 10 Aug 2016, 15:42
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.

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

Verfasst: 10 Aug 2016, 16:24
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

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

Verfasst: 10 Aug 2016, 18:07
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!

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

Verfasst: 06 Dez 2016, 10:50
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',
]