[Gelöst] Server Anfrage an opsi-client
[Gelöst] Server Anfrage an opsi-client
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
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
- n.wenselowski
- Ex-uib-Team
- Beiträge: 3194
- Registriert: 04 Apr 2013, 12:15
Re: Server Anfrage an opsi-client
Hi,
du kannst isEventRunning nutzen, um abzufragen ob gerade ein bestimmtes Event (bspw. gui_startup) läuft.
Ungefähr so (nicht getestet...):
Gruß
Niko
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
Re: Server Anfrage an opsi-client
Hey Niko,
danke für die Rückmeldung. Meine Tests waren leider nicht sehr erfolgreich. Ich bekomme zwar ein Ergebnis, jedoch nicht das korrekte.
gibt mir die folgende Rückmeldung
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?
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
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)
Hast du eine weitere Idee, die ich austesten kann?
Let's try something new: opsi-docker
- n.wenselowski
- Ex-uib-Team
- Beiträge: 3194
- Registriert: 04 Apr 2013, 12:15
Re: Server Anfrage an opsi-client
Hi,
so als Idee: ist während deinem Test ein User angemeldet?
Gruß
Niko
so als Idee: ist während deinem Test ein User angemeldet?
Gruß
Niko
Code: Alles auswählen
import OPSI
Re: Server Anfrage an opsi-client
Ja. Ich habe es gerade auch ohne angemeldeten Benutzer versucht. Gleiches Ergebnis.n.wenselowski hat geschrieben:so als Idee: ist während deinem Test ein User angemeldet?
Sind alles Windows 10 Clients.
Let's try something new: opsi-docker
- n.wenselowski
- Ex-uib-Team
- Beiträge: 3194
- Registriert: 04 Apr 2013, 12:15
Re: Server Anfrage an opsi-client
Versuch mal als event on_demand{user_logged_in}.
Bringt das Besserung?
Bringt das Besserung?
Code: Alles auswählen
import OPSI
Re: Server Anfrage an opsi-client
Funktioniert:
Ausgabe:
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.
Code: Alles auswählen
opsi-admin method hostControl_opsiclientdRpc isEventRunning on_demand{user_logged_in} it-010.FQDN
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)
Den Rest kann ich ja dann irgendwie auswerten.
Let's try something new: opsi-docker
Re: Server Anfrage an opsi-client
Okay. Die Passwortabfrage habe ich umgehen können. Bleiben aber immernoch ein paar Fehlermeldungen: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?
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
Re: Server Anfrage an opsi-client
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:
Aber die Ausgabe bringt nur folgendes:
Wenn ich den command aus dem script manuell ausführe kommt das richtige Ergebnis:
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?
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
Code: Alles auswählen
Param1: PRODUCTID
Param2: opsi-deploy-03.fqdn
Param3: setup
{
"opsi-deploy-03.fqdn": {
"result": null,
"error": null
}
}
Code: Alles auswählen
{
"opsi-deploy-03.fqdn": {
"result": false,
"error": null
}
}
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
Gelöst: Server Anfrage an opsi-client
Nevermind... Mein Fehler... Die "falsche" Rückgabe kam von einem anderen Command. Vielleicht lags ja an der Hitze hier im Büro.
Mein Script funktioniert also grundlegend wie ich es mir vorstelle. Kann ich nun also weiter rumprobieren. Danke für deine Unterstützung Niko.
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