Verlässlichkeit der Methode "hostControl_getActiveSessions"

Antworten
thomas.besser
Beiträge: 461
Registriert: 09 Sep 2009, 09:40

Verlässlichkeit der Methode "hostControl_getActiveSessions"

Beitrag von thomas.besser »

Hallo,

wir versuchen hier aktuell mit der Methode "hostControl_getActiveSessions" verlässlich herauszufinden, ob aktuell ein Benutzer am Rechner angemeldet ist. Zum Hintergrund: es geht um einen studentischen Rechnerraum, der rund um die Uhr benutzt werden kann. Wir wollen Rechner, an denen niemand angemeldet ist, abends automatisiert scriptbasiert über das Netzwerk herunterfahren.

Das Problem scheint momentan die Verlässlichkeit der Methode "hostControl_getActiveSessions" zu sein. In einer Testumgebung habe ich mich gestern um 07:10 Uhr abgemeldet. Um 15:38 Uhr hat obige Methode immer noch gemeldet, dass ich angemeldet sei. Was definitiv schon lange nicht mehr der Fall ist.

Falls es evtl. wichtig sein könnte: wir verwenden "roaming profiles", die lokale Kopie des Profils wird erst verworfen, wenn sie älter als ein Tag ist (da Win10 einen bekannten Bug hat, dass man die Profile leider nicht mehr direkt nach erfolgreichem Abmelden mehr löschen kann). Das Modul "User Profile Management" kommt ebenfalls zum Einsatz und wird in einigen OPSI-Paketen verwendet.

Über Feedback würde ich mich freuen...

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

Re: Verlässlichkeit der Methode "hostControl_getActiveSessions"

Beitrag von n.wenselowski »

Hi,

ist der Zielrechner ein Win10?
Ich habe das was in meinem Hinterkopf, dass User bei Win10 noch im Hintergrund angemeldet bleiben, damit ein User für System-Upgrades vorhanden ist.
Ich kann mir vorstellen, dass genau das hier zuschlägt...


Gruß

Niko

Code: Alles auswählen

import OPSI
thomas.besser
Beiträge: 461
Registriert: 09 Sep 2009, 09:40

Re: Verlässlichkeit der Methode "hostControl_getActiveSessions"

Beitrag von thomas.besser »

Hi Nico,

ja, ist Windows 10.

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

Re: Verlässlichkeit der Methode "hostControl_getActiveSessions"

Beitrag von n.wenselowski »

Hi Thomas,

dann prüf doch bitte mal ob noch jemand eingeloggt ist.


Gruß

Niko

Code: Alles auswählen

import OPSI
f.ritt
Beiträge: 2
Registriert: 19 Mär 2019, 12:17

Re: Verlässlichkeit der Methode "hostControl_getActiveSessions"

Beitrag von f.ritt »

Hallo,

ich bin die Person die das bei uns gerade implementiert. Ausführen vom in Windows eingebauten Befehl "query" liefert den richtigen Output, also eine Session mit ID wenn jemand eingeloggt ist, und keine wenn niemand eingeloggt ist. Aber auch wenn bei "query" kein eingeloggter User angezeigt wird, liefert die opsi-methode noch entweder einen System-User oder eben den letzten eingeloggten User der eigentlich schon ausgeloggt ist.

Getestet habe ich dies indem ich den "query" Befehl mit hostControl_execute aufgerufen habe...

Dies ist der Output bei einem eingeloggten User:
test-user@opsi-admin> method hostControlSafe_execute "cmd64.exe /c query user" beispielrechner.example.com
{
"beispielrechner.example.com": {
"result": null,
"error": {
"message": "[Errno 1] Command 'cmd64.exe /c query user' failed (1):\n BENUTZERNAME SITZUNGSNAME ID
STATUS LEERLAUF ANMELDEZEIT\n test-user console 1 Aktiv Kein 19.03.2019 10:30",
"class": "IOError"
}
}
}
Und dieser wenn niemand eingeloggt ist
test-user@opsi-admin> method hostControlSafe_execute "cmd64.exe /c query user" beispielrechner.example.com
{
"beispielrechner.example.com": {
"result": null,
"error": {
"message": "[Errno 1] Command 'cmd64.exe /c query user' failed (1):\nKein Benutzer vorhanden f�r *",
"class": "IOError"
}
}
}
Dabei kommt bei den Aufrufen leider immer dieser IOError, obwohl in der error message noch der Output des Befehls angezeigt wird... liegt das vielleicht an einem Syntaxfehler am Aufruf? Kann ich theoretisch "query" so aufrufen, ohne dass der Output in einer Fehlermeldung zurückgeliefert wird?

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

Re: Verlässlichkeit der Methode "hostControl_getActiveSessions"

Beitrag von n.wenselowski »

Hi,

opsi nutzt die Windows-API zur Abfrage.
Ich kann mir vorstellen, dass diese im Gegensatz zu anderen Tools, alle User anzeigt.


Ich würde mal vermuten der Aufruf der cmd.exe kommt nicht mit exit code 0 zurück, sondern liefert etwas anderes.
Den genauen Exit-Code sollte man mit Log-Level 7 auf dem Client in Erfahrung bringen können.


Gruß

Niko

Code: Alles auswählen

import OPSI
Antworten