Produkte auf "installed" setzen

damien.leviet
Beiträge: 89
Registriert: 24 Feb 2014, 11:30

Produkte auf "installed" setzen

Beitragvon damien.leviet » 08 Mai 2019, 16:39

Hallo zusammen,

bei uns steht eine Migration von Computer an.
Um sehr viel Traffic zu vermeiden, haben wir Mastersysteme mittels OPSI erstellt und diverse Produkte installiert.
Abschließend wurde das System gesysprepd und vervielfältigt.

So weit, so gut.
Jetzt wurde ein Teil der Geräte geliefert und wir haben auch schon einen wieder in die Domäne aufgenommen, den OPSI Client installiert und alles läuft wie erwartet.

Was jetzt fehlt, ist der Installationsstatus der Produkte. Diese sind logischerweise jetzt alle leer, da OPSI nicht weiß, dass der Rechner schon die Produkte vorinstalliert bekommen hat.

Meine Frage:
- Kann man mittels swaudit automatisch mit den Produktpaketen einen Abgleich machen? (Am besten mit einem Pattern)

Bitte auch mit Beispielen, da hier im Forum schon mal jemand die Frage gestellt und gelöst, jedoch kein Skript zur Verfügung bereitgestellt hat.

Danke euch!

Gruß,
Damien

dropped91
Beiträge: 71
Registriert: 11 Mai 2017, 16:29

Re: Produkte auf "installed" setzen

Beitragvon dropped91 » 08 Mai 2019, 22:06

Wo finden wir denn die Lösung?

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

Re: Produkte auf "installed" setzen

Beitragvon n.wenselowski » 09 Mai 2019, 12:13

Hi Damien,

damien.leviet hat geschrieben:bei uns steht eine Migration von Computer an.
Um sehr viel Traffic zu vermeiden, haben wir Mastersysteme mittels OPSI erstellt und diverse Produkte installiert.
Abschließend wurde das System gesysprepd und vervielfältigt.

So weit, so gut.
Jetzt wurde ein Teil der Geräte geliefert und wir haben auch schon einen wieder in die Domäne aufgenommen, den OPSI Client installiert und alles läuft wie erwartet.

Was jetzt fehlt, ist der Installationsstatus der Produkte. Diese sind logischerweise jetzt alle leer, da OPSI nicht weiß, dass der Rechner schon die Produkte vorinstalliert bekommen hat.


Nutzt ihr opsi-wim-capture? Das macht nämlich genau das (zurückspielen der opsi-Metadaten).

damien.leviet hat geschrieben:Meine Frage:
- Kann man mittels swaudit automatisch mit den Produktpaketen einen Abgleich machen? (Am besten mit einem Pattern)

Es ist nicht builtin in swaudit, weil das Problem auf das man immer läuft ist, dass die Produkt-IDs in opsi nie gleich sind zu den Daten, die das SWaudit ausliest.

Wenn man eine Zuordnung hat, kann man prüfen, ob eine Software auf einem Rechner installiert ist:

Code: Alles auswählen

auditSoftwareOnClient_getObjects(state=1, name=<software aus audit>, clientId=clientId)


Und wenn gefunden, dann mit folgendem Call den Status des opsi-Produkts auf installiert setzen:

Code: Alles auswählen

setProductInstallationStatus(productId, clientId, "installed")

Umwandlung in einen Call für eine spezifische Progammiersprache oder opsi-admin überlasse ich dem geneigten Leser ;)


Gruß

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

damien.leviet
Beiträge: 89
Registriert: 24 Feb 2014, 11:30

Re: Produkte auf "installed" setzen

Beitragvon damien.leviet » 09 Mai 2019, 14:42

n.wenselowski hat geschrieben:Hi Damien,

Nutzt ihr opsi-wim-capture? Das macht nämlich genau das (zurückspielen der opsi-Metadaten).



Wir haben erst mittels opsi-netboot (win10-x64) sowie unseren OPSI-Paketen einen Rechner aufgesetzt (quasi One-Click Installation, richtig super!).
Danach wurde die Master-Festplatte dem Unternehmen, welches unsere PCs liefert, bereitgestellt und vervielfältigt.

n.wenselowski hat geschrieben:Wenn man eine Zuordnung hat, kann man prüfen, ob eine Software auf einem Rechner installiert ist:

Code: Alles auswählen

auditSoftwareOnClient_getObjects(state=1, name=<software aus audit>, clientId=clientId)


Und wenn gefunden, dann mit folgendem Call den Status des opsi-Produkts auf installiert setzen:

Code: Alles auswählen

setProductInstallationStatus(productId, clientId, "installed")

Umwandlung in einen Call für eine spezifische Progammiersprache oder opsi-admin überlasse ich dem geneigten Leser ;)


Gruß

Niko


Ich habe es am Ende mit einem kleinen Shellskript gelöst.
Ich hole mir aus einer einfachen Liste, wo sämtliche von uns genutzten Produkte stehen, die Daten in eine FOR Schleife und setze für den angegebenen Host den Status auf "installed":

opsi-setInstalled.sh

Code: Alles auswählen

#!/bin/sh
STATE="installed"
PRODUCTS=/root/opsi_default_products
DOMAIN=".local"

if [ -z $1 ]; then
    echo "Benutzung: $0 <workstation name>"
    exit 0
fi

for PRODUCT in $(cat $PRODUCTS); do
   echo "Produkt: $PRODUCT"
   opsi-admin -d method setProductInstallationStatus "$PRODUCT" "$1.$DOMAIN" $STATE
   echo "Status auf '$STATE' gesetzt!"
   echo ""
done;

echo "Status für alle Produkte von Host '$1' auf '$STATE' gesetzt!"
exit 0