Seite 1 von 1

Erstellen opsi-client über python-script

Verfasst: 14 Mär 2016, 12:35
von cre
Client anlegen via python

Hallo,

bei der automatischen Installation von Win7 (64Bit) komme ich leider nicht weiter.

Wenn ich einen Client manuell über Opsi-configed eintrage funktioniert alles problemlos und die Installation gelingt.

Versuche ich allerdings die neuen Clients über ein Python script einzubinden und anschliessend zu installieren, schlägt die Installation fehl:
Die Antwortdatei für die unbeaufsichtigte Installation [C:\Windows\Panther\unattend.xml] für Durchgang [specialize] konnte nicht analysiert oder verarbeitet werden. Die Antwortdatei ist ungültig.
Zum Vorgehen:

Es sollen Installationen vorgenommen werden, die entsprechenden Rechner sind dem System völlig unbekannt.
Die Rechner senden beim booten einen DHCP-Request, der vom Server auch beantwortet wird.
Sie nehmen allerdings die entsprechende DHCP-Offer nicht an.
Daher wird über das Script die syslog gefiltert nach entsprechenden Einträgen.

Mit den gefilterten (neuen) MAC-Adressen wird anschliessend der Client angelegt

Code: Alles auswählen

call(["opsi-admin", "-d", "method", "createClient", "'client" + str(<someID>) + "'", "'uib.local'", "''", "''", "'" + <theIP> + "'", "'" + <theMAC> + "'"])
Diese Schritte laufen alle einwandfrei. Der neue Client erscheint im opsi-configed.
Wenn ich ihm die Installation zuweise werden, wie schon oben geschrieben, die ersten Schritte ausgeführt. Beim letzten Schritt kommt es dann zur Fehlermeldung.

Danke schonmal im Voraus.

Beste Grüße

Re: Erstellen opsi-client über python-script

Verfasst: 14 Mär 2016, 13:50
von uncle_scrooge
Eigene unattend.xml? Oder Original von uib?
Die Logs unterhalb von c:\panther schon durchgesehen?

Re: Erstellen opsi-client über python-script

Verfasst: 14 Mär 2016, 14:33
von cre
uncle_scrooge hat geschrieben:Eigene unattend.xml? Oder Original von uib?
Die Logs unterhalb von c:\panther schon durchgesehen?
Danke für den Hinweis.
Ich hab den Fehler am falschen Ende der Kette gesucht (die Vermutung war, dass ich noch eine Einstellung vergessen hatte).

In der Tat haben die Logs auf dem Zielsystem den Fehler gezeigt.
Der Clientname hatte zu viele Zeichen (15 sind wohl nur erlaubt).

Vielen Dank und Beste Grüße

Re: Erstellen opsi-client über python-script

Verfasst: 14 Mär 2016, 14:46
von uncle_scrooge
NetBIOS ist schon was Feines.
Wie eine Fußhupe. Kaum denkst Du, Du bist den Kläffer endlich los, hast Du ihn wieder am Hosenbein.

Re: Erstellen opsi-client über python-script

Verfasst: 15 Mär 2016, 10:42
von n.wenselowski
Hi,
cre hat geschrieben:

Code: Alles auswählen

call(["opsi-admin", "-d", "method", "createClient", "'client" + str(<someID>) + "'", "'uib.local'", "''", "''", "'" + <theIP> + "'", "'" + <theMAC> + "'"])
Es macht mich ja wirklich betroffen das zu sehen, weil opsi-admin auch ein Python-Tool ist und es das Package OPSI gibt. :shock:
Dadurch kann man sehr einfach - und deutlich schneller als über opsi-admin - mit dem Backend arbeiten.

Hier mal die direkte Variante:

Code: Alles auswählen

from OPSI.Backend.BackendManager import BackendManager

backend = BackendManager(
        dispatchConfigFile=u'/etc/opsi/backendManager/dispatch.conf',
        backendConfigDir=u'/etc/opsi/backends',
        extensionConfigDir=u'/etc/opsi/backendManager/extend.d'
)
# Ab python-opsi 4.0.6.39 geht es dann sogar so:
# backend = BackendManager()

# Direkter Weg ohne Backend-Erweiterung:
backend.host_createOpsiClient(id='client{0}.uib.local'.format(someID), ipAddress=theIP, hardwareAddress=theMAC)

# Über die Erweiterung wäre es dann:
# backend.createClient("client" + str(someID), 'uib.local', ipAddress=theIP, hardwareAddress=theMAC)
Gerade wenn es darum geht viele Clients anzulegen wird man hier die eine oder andere Sekunde sparen können. ;)


Viele Grüße

Niko