Hallo, ich habe folgendes Anliegen, ich möchte in einen USC 3.1 eine csv Datei integrieren, dies sollte anscheinend über ein Scrpit in der Konsole möglich sein oder auch über ein Toolvon UCS selbst? Wie auch immer ich konnte weder das eine noch das andere finden, falls jemand schon so etwas gemacht hat wäre ein wenig Hilfe willkommen.
thx
Bandit
Hallo,
ich bin nicht ganz sicher ob ich Sie richtig verstehe. Wenn Sie Objekte (Benutzer, Gruppen, Rechner o.ä.) aus einer CSV Datei importieren wollen hilft aber vielleicht der SDB-Artikel: Übergabe von Werten an den Univention Directory Manager mittels Import einer CSV Datei.
Mit freundlichen Grüßen
Janis Meybohm
Hallo,
ja prinzipiell ist das schon das worum es geht, jedoch hilft mir das Script bzw. die Module im CLI und ihre Funktionen nur bedingt, da hier zwar die Einrichtung und Handhabung von Daten beschrieben wird aber eben nicht wie ich diese anhand einer vorhandenen csv Datei importieren kann. Oder ist mit diesem Befehl (-set path= ) die Quelldatei gemeint? Die csv stammt aus dem ldap eines OpenExchange und enthält Userdaten die in usc verwendet werden sollen.
Hallo,
ein wesentliches, noch aus Unix-Zeiten übernommenes Konzept in Linux ist, dass man versucht, Aufgaben, für die es bereits sinnvolle Werkzeuge oder Werkzeugkombinationen gibt, möglichst nicht noch einmal durch eingebaute Funktionen nachzubilden. Die Kommandozeilentools von UCS haben keinen Import-CSV Schalter. Das brauchen sie auch nicht.
Das Beispiel im angeführten SDB-Artikel erklärt den Weg exemplatisch für die Erzeugung von Freigaben.
In unsere Werkzeugkiste gehören:
- “cat” zum Anzeigen von Dateien
- “while … do …done” zum Verarbeiten der Datensätze und -felder
- “udm” das Univention Kommandozeilentool, siehe auch Doku: 4.8.2. Example invocations of the command line interface
Angenommen, wir haben folgende CSV mit den Feldern UID, Vorname, Nachname und SMTP-Adresse:
root@master:~# cat users.csv
johnd;John;Doe;john.doe@example.com
janed;Jane;Doe;jane.doe@example.com
Die Besonderheit hier ist der Feldtrenner (internal field separator oder kurz IFS). Das Semikolon wir in der Shell als Befehlstrenner benutzt. Deshalb müssen wir es gesondert behandeln.
Das folgende Codebeispiel liest die Datei, holt sich für jeden Datensatz die Felder in 4 einzelne Variablen, zeigt aber nur die letzte an:
root@master:~# cat users.csv | while IFS=\; read uid first last mail; do echo $mail; done
john.doe@example.com
jane.doe@example.com
Das muss man jetzt nur noch mit einem udm Befehl verknüpfen:
cat users.csv | while IFS=\; read uid first last mail
do
univention-directory-manager users/user create \
--position "cn=users,dc=example,dc=com" \
--set username=$uid \
--set firstname=$first \
--set lastname=$last \
--set mailPrimaryAddress=$mail \
--set password="secretpassword"
done
Ich hoffe, dass Ihnen dieses Beispiel weiterhilft.
Viele Grüße,
Dirk Ahrnke
Besten Dank, das hilft mir sehr weiter, irgendwie war mir klar das die Lösung einfach sein würde, ich wußte nur nicht in welcher Kombination .