[Gelöst] Server Anfrage an opsi-client

Benutzeravatar
CKoehler
Beiträge: 29
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

[Gelöst] Server Anfrage an opsi-client

Beitragvon CKoehler » 12 Jun 2019, 19:48

Moin,

ich versuche gerade unserer automatischen Build-Prozess von localboot-Produkten zu erweitern/verbessern.
Gibt es eine Möglichkeit, vom Server aus (opsi-admin?) eine Anfrage an den opsi-client zu senden, ob dieser gerade eine Aktion durchführt; Sprich, die Werte die auf der infopage des Clients stehen, vom Server abfragen?

Gruß
Christopher
Zuletzt geändert von CKoehler am 19 Jun 2019, 19:33, insgesamt 1-mal geändert.

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

Re: Server Anfrage an opsi-client

Beitragvon n.wenselowski » 17 Jun 2019, 14:41

Hi,

du kannst isEventRunning nutzen, um abzufragen ob gerade ein bestimmtes Event (bspw. gui_startup) läuft.
Ungefähr so (nicht getestet...):

Code: Alles auswählen

opsi-admin method hostControl_opsiclientdRpc isEventRunning gui_startup client.fqdn.here



Gruß

Niko
opsi development - uib gmbh
For productive opsi installations we recommend support contracts.

Benutzeravatar
CKoehler
Beiträge: 29
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

Re: Server Anfrage an opsi-client

Beitragvon CKoehler » 17 Jun 2019, 15:07

Hey Niko,

danke für die Rückmeldung. Meine Tests waren leider nicht sehr erfolgreich. Ich bekomme zwar ein Ergebnis, jedoch nicht das korrekte.

Code: Alles auswählen

opsi-admin method hostControl_opsiclientdRpc isEventRunning on_demand it-010.fqdn

gibt mir die folgende Rückmeldung

Code: Alles auswählen

Password:
[3] Failed to read session file '/home/adminuser/.opsi.org/session': [Errno 13] Permission denied: u'/home/adminuser/.opsi.org/session' (opsi-admin|300)
[3] Failed to write session file '/home/adminuser/.opsi.org/session': [Errno 13] Permission denied: u'/home/adminuser/.opsi.org/session' (opsi-admin|320)
[3] Failed to read history file u'/home/adminuser/.opsi.org/history': [Errno 13] Permission denied: u'/home/adminuser/.opsi.org/history' (opsi-admin|474)
{
    "it-010.fqdn": {
        "result": false,
        "error": null
    }
}
[3] Failed to write history file u'/home/adminuser/.opsi.org/history': [Errno 13] Permission denied: u'/home/adminuser/.opsi.org/history' (opsi-admin|559)


Wenn ich jetzt die Fehlermeldungen einfach ignoriere: Das Ergebnis "result": false ist immer das gleiche, auch wenn ich auf der infopage des clients sehe, dass das Event gerade läuft.

Hast du eine weitere Idee, die ich austesten kann?

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

Re: Server Anfrage an opsi-client

Beitragvon n.wenselowski » 17 Jun 2019, 15:23

Hi,

so als Idee: ist während deinem Test ein User angemeldet?



Gruß

Niko
opsi development - uib gmbh
For productive opsi installations we recommend support contracts.

Benutzeravatar
CKoehler
Beiträge: 29
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

Re: Server Anfrage an opsi-client

Beitragvon CKoehler » 17 Jun 2019, 15:39

n.wenselowski hat geschrieben:so als Idee: ist während deinem Test ein User angemeldet?

Ja. Ich habe es gerade auch ohne angemeldeten Benutzer versucht. Gleiches Ergebnis.
Sind alles Windows 10 Clients.

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

Re: Server Anfrage an opsi-client

Beitragvon n.wenselowski » 17 Jun 2019, 15:45

Versuch mal als event on_demand{user_logged_in}.

Bringt das Besserung?
opsi development - uib gmbh
For productive opsi installations we recommend support contracts.

Benutzeravatar
CKoehler
Beiträge: 29
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

Re: Server Anfrage an opsi-client

Beitragvon CKoehler » 18 Jun 2019, 10:47

Funktioniert:

Code: Alles auswählen

opsi-admin method hostControl_opsiclientdRpc isEventRunning on_demand{user_logged_in} it-010.FQDN

Ausgabe:

Code: Alles auswählen

Password:
[3] Failed to read session file '/home/adminuser/.opsi.org/session': [Errno 13] Permission denied: u'/home/adminuser/.opsi.org/session' (opsi-admin|300)
[3] Failed to write session file '/home/adminuser/.opsi.org/session': [Errno 13] Permission denied: u'/home/adminuser/.opsi.org/session' (opsi-admin|320)
[3] Failed to read history file u'/home/adminuser/.opsi.org/history': [Errno 13] Permission denied: u'/home/adminuser/.opsi.org/history' (opsi-admin|474)
{
    "it-010.FQDN": {
        "result": true,
        "error": null
    }
}
[3] Failed to write history file u'/home/adminuser/.opsi.org/history': [Errno 13] Permission denied: u'/home/adminuser/.opsi.org/history' (opsi-admin|559)


Wie bekomme ich es nun hin, dass ich das Passwort über das Skript mitgeben kann und die Fehlermeldungen nicht kommen bzw. unterdrücke?
Den Rest kann ich ja dann irgendwie auswerten.

Benutzeravatar
CKoehler
Beiträge: 29
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

Re: Server Anfrage an opsi-client

Beitragvon CKoehler » 18 Jun 2019, 10:51

CKoehler hat geschrieben:Wie bekomme ich es nun hin, dass ich das Passwort über das Skript mitgeben kann und die Fehlermeldungen nicht kommen bzw. unterdrücke?

Okay. Die Passwortabfrage habe ich umgehen können. Bleiben aber immernoch ein paar Fehlermeldungen:

Code: Alles auswählen

opsi-admin -d method hostControl_opsiclientdRpc isEventRunning on_demand{user_logged_in} it-010.FQDN

[3] Failed to read history file u'/home/adminuser/.opsi.org/history': [Errno 13] Permission denied: u'/home/adminuser/.opsi.org/history' (opsi-admin|474)
{
    "it-010.FQDN": {
        "result": false,
        "error": null
    }
}
[3] Failed to write history file u'/home/adminuser/.opsi.org/history': [Errno 13] Permission denied: u'/home/adminuser/.opsi.org/history' (opsi-admin|559)

Benutzeravatar
CKoehler
Beiträge: 29
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

Re: Server Anfrage an opsi-client

Beitragvon CKoehler » 18 Jun 2019, 18:40

Okay. Ich komme etwas weiter.
Die Fehlermeldungen lassen sich mit sudo einfach unterdrücken. Ich habe nun versucht das ganze in ein shell-script zu verpacken:

Code: Alles auswählen

#!/bin/bash
# $1 -> productid
# $2 -> client fqdn
# $3 -> event action
echo "Param1: $1"
echo "Param2: $2"
echo "Param3: $3"
if [ $# -gt 2 ]; then
 opsi-admin -d method setProductActionRequest $1 $2 $3
 opsi-admin -d method hostControlSafe_fireEvent "on_demand" $2
 var=$(opsi-admin -d method hostControlSafe_opsiclientdRpc "isEventRunning" "on_demand{user_logged_in}" "$2" | grep result)
 sleep 10s
 while [ "$var" == "\"result\": true," ]
 do
  sleep 10s
  var=$(opsi-admin -d method hostControlSafe_opsiclientdRpc "isEventRunning" "on_demand{user_logged_in}" "$2" | grep result)
 done
else
 echo "Error: Not enough parameter defined"
 exit 1
fi

Aber die Ausgabe bringt nur folgendes:

Code: Alles auswählen

Param1: PRODUCTID
Param2: opsi-deploy-03.fqdn
Param3: setup
{
    "opsi-deploy-03.fqdn": {
        "result": null,
        "error": null
    }
}


Wenn ich den command aus dem script manuell ausführe kommt das richtige Ergebnis:

Code: Alles auswählen

{
    "opsi-deploy-03.fqdn": {
        "result": false,
        "error": null
    }
}


Falls es aufgefallen ist: Es macht keinen Unterschied ob ich hostControlSafe_opsiclientdRpc oder hostControl_opsiclientdRpc nutze.
Auch das Script habe ich mit sudo ausgeführt.

Habt ihr noch Ideen, wieso dort immer null zurück kommt?

Benutzeravatar
CKoehler
Beiträge: 29
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

Gelöst: Server Anfrage an opsi-client

Beitragvon CKoehler » 19 Jun 2019, 09:32

Nevermind... Mein Fehler... Die "falsche" Rückgabe kam von einem anderen Command. Vielleicht lags ja an der Hitze hier im Büro. :D

Mein Script funktioniert also grundlegend wie ich es mir vorstelle. Kann ich nun also weiter rumprobieren. Danke für deine Unterstützung Niko.