Seite 1 von 1

Setzen von Produkteigenschaften über die Kommandozeile

Verfasst: 11 Apr 2024, 11:05
von Martin_IMWS
Hallo zusammen,

ist es möglich, und wenn ja, wie, eine Produkt-Property über die Kommandozeile zu setzen?

Konkret möchte ich auf einer Gruppe von Rechnern die Produkteigenschaft "allow_reboot" des Produkts "ops-client-agent" auf "false" setzen.

Ich würde in etwa folgende Syntax auf der Kommandozeile des opsi-servers erwarten:

opsi-cli -l5 client-action --clients X,X,X --product opsi-client-agent --set-property "allow_reboot"="false"

Freue mich auf eure Rückmeldungen

Martin

Re: Setzen von Produkteigenschaften über die Kommandozeile

Verfasst: 12 Apr 2024, 11:44
von ThomasT
Hallo Martin,

leider habe ich hier keine wirklich schöne Lösung, aber vielleicht hat jemand noch ne Idee.

Wie immer bei automatischer Verarbeitung gilt, vorher Backup machen und Testen :D
Ich habe hier mit jq das KV Paar welches ich brauchte rausgefischt, geht auch anders.
1. Clientliste erstellen:

Code: Alles auswählen

opsi-cli jsonrpc execute objectToGroup_getObjects '' '{"groupId":"GRUPPENNAME"}' | jq '.[].objectId' | sed 's/"//g' > clientliste.txt
2. Template Object ablegen:

Code: Alles auswählen

cat template.json
[
  {
    "values": [
      false
    ],
    "productId": "opsi-client-agent",
    "propertyId": "allow_reboot",
    "objectId": "<CLIENTID>",
    "type": "ProductPropertyState",
    "ident": "opsi-client-agent;allow_reboot;<CLIENTID>"
  }
]
3. Über Clients iterieren und Property setzen:

Code: Alles auswählen

 for CLIENTID in $(cat clientliste.txt); do cp template.json tmp.json ;sed -i "s/<CLIENTID>/$CLIENTID/g" tmp.json; echo "Changing $CLIENTID"; opsi-cli --input-file tmp.json jsonrpc execute productPropertyState_createObjects; done