[Gelöst] Server Anfrage an opsi-client

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

[Gelöst] Server Anfrage an opsi-client

Beitrag von CKoehler »

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.
Let's try something new: opsi-docker
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Server Anfrage an opsi-client

Beitrag von n.wenselowski »

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

Code: Alles auswählen

import OPSI
Benutzeravatar
CKoehler
Beiträge: 35
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

Re: Server Anfrage an opsi-client

Beitrag von CKoehler »

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?
Let's try something new: opsi-docker
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Server Anfrage an opsi-client

Beitrag von n.wenselowski »

Hi,

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



Gruß

Niko

Code: Alles auswählen

import OPSI
Benutzeravatar
CKoehler
Beiträge: 35
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

Re: Server Anfrage an opsi-client

Beitrag von CKoehler »

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.
Let's try something new: opsi-docker
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Server Anfrage an opsi-client

Beitrag von n.wenselowski »

Versuch mal als event on_demand{user_logged_in}.

Bringt das Besserung?

Code: Alles auswählen

import OPSI
Benutzeravatar
CKoehler
Beiträge: 35
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

Re: Server Anfrage an opsi-client

Beitrag von CKoehler »

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.
Let's try something new: opsi-docker
Benutzeravatar
CKoehler
Beiträge: 35
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

Re: Server Anfrage an opsi-client

Beitrag von CKoehler »

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)
Let's try something new: opsi-docker
Benutzeravatar
CKoehler
Beiträge: 35
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

Re: Server Anfrage an opsi-client

Beitrag von CKoehler »

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?
Let's try something new: opsi-docker
Benutzeravatar
CKoehler
Beiträge: 35
Registriert: 14 Sep 2015, 21:12
Wohnort: Braunschweig

Gelöst: Server Anfrage an opsi-client

Beitrag von CKoehler »

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.
Let's try something new: opsi-docker
Antworten