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
Verlässlichkeit der Methode "hostControl_getActiveSessions"
-
- Beiträge: 461
- Registriert: 09 Sep 2009, 09:40
- n.wenselowski
- Ex-uib-Team
- Beiträge: 3194
- Registriert: 04 Apr 2013, 12:15
Re: Verlässlichkeit der Methode "hostControl_getActiveSessions"
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
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
-
- Beiträge: 461
- Registriert: 09 Sep 2009, 09:40
Re: Verlässlichkeit der Methode "hostControl_getActiveSessions"
Hi Nico,
ja, ist Windows 10.
Gruss
Thomas
ja, ist Windows 10.
Gruss
Thomas
- n.wenselowski
- Ex-uib-Team
- Beiträge: 3194
- Registriert: 04 Apr 2013, 12:15
Re: Verlässlichkeit der Methode "hostControl_getActiveSessions"
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:
Grüße
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:
Und dieser wenn niemand eingeloggt isttest-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"
}
}
}
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?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"
}
}
}
Grüße
- n.wenselowski
- Ex-uib-Team
- Beiträge: 3194
- Registriert: 04 Apr 2013, 12:15
Re: Verlässlichkeit der Methode "hostControl_getActiveSessions"
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
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