Seite 1 von 1

Opsi rpc error bei auslesen aktiver Sessions

Verfasst: 27 Aug 2025, 10:58
von isnoguter
Hallo zusammen,

ich versuche mir in einem BASH-Skript die aktiven Sessions bestimmter Clients auszulesen.

Code: Alles auswählen

while IFS= read -r clients; do
	
    # Debugging-Ausgabe
    # echo "Client: '$clients'"
    # echo "Befehl: opsi-cli jsonrpc execute hostControlSafe_getActiveSessions \"$clients\""
    
    # Führe den Befehl für jeden Schlüssel aus
    opsi-cli jsonrpc execute hostControlSafe_getActiveSessions "$clients" >> "sessions.txt" 2>> error.log
done < clients_active.txt
Die Datei "clients_active.txt" beinhaltet nur eine Liste der relevanten Clients:

Code: Alles auswählen

nb2115.domain.de
nb2121.domain.de
nb2122.domain.de
Dabei erhalte ich immer den folgenden Fehler:

Code: Alles auswählen

╭─ Error ──────────────────────────────────────────────────────────────────────╮
│ Opsi rpc error: RPCHostControlMixin.hostControlSafe_getActiveSessions()      │
│ takes from 1 to 2 positional arguments but 3 were given                      │
╰──────────────────────────────────────────────────────────────────────────────╯
Deshalb habe ich den Befehl in eine Datei umgeleitet.

Code: Alles auswählen

# Befehl in einer Variablen speichern
command="opsi-cli jsonrpc execute hostControlSafe_getActiveSessions \"$clients\" >> \"sessions.txt\""
    
# Debugging-Ausgabe
echo "$command" >> command.txt
Inhalt der Datei command.txt

Code: Alles auswählen

opsi-cli jsonrpc execute hostControlSafe_getActiveSessions "nb2115.domain.de" >> "sessions.txt"
opsi-cli jsonrpc execute hostControlSafe_getActiveSessions "nb2121.domain.de" >> "sessions.txt"
opsi-cli jsonrpc execute hostControlSafe_getActiveSessions "nb2122.domain.de" >> "sessions.txt"
Wenn ich diese Datei mittels ./command.txt aus meiner Skript aufrufe, erhalte ich wieder den oben aufgeführten Fehler.

Führe ich die Datei ./command.txt direkt in der Kommandozeile aus, funktionieren die Befehle.

Hat jemand eine Idee, warum das, so ist und wie ich, dass alles in einem Skript erledigen kann?

Re: Opsi rpc error bei auslesen aktiver Sessions

Verfasst: 27 Aug 2025, 19:03
von isnoguter
Nachdem ich festgestellt habe, dass folgender Befehl außerhalb der Schleife funktioniert. Bzw. auch in der Schleife nicht funktioniert, wenn ich "$clients" z.B. durch "nb2122.domain.de" ersetze habe ich die Schleife anders umgesetzt.

Code: Alles auswählen

opsi-cli jsonrpc execute hostControlSafe_getActiveSessions "$clients" >> "sessions.txt" 2>> error.log
Damit funktioniert es jetzt. Dennoch interessiert mich die Ursache, warum meine erste Variante nicht funktioniert hat.

Code: Alles auswählen

# Lies die Datei Zeile für Zeile und speichere die Clients in einem Array
mapfile -t clients < export_${SERVER}_clients_active.txt

# Iteriere über das Array der Clients
for client in "${clients[@]}"; do
    # Debugging-Ausgabe
    echo "Client: '$client'"
    echo "Befehl: opsi-cli jsonrpc execute hostControlSafe_getActiveSessions \"$client\""
    
    # Führe den Befehl für jeden Client aus
    opsi-cli jsonrpc execute hostControlSafe_getActiveSessions "$client" >> "export_${SERVER}_sessions.txt" 2>> error.log
done