Hallo zusammen,
Es grüsst euch der grösste Programmier-Noob auf Erden.
Ich versuche derzeit eine LDAP- Migration durchzuführen. Habe also ein Konzept erstellt und die Daten aus der Active Directory (Microsoft) exportiert.
Das ganze dient dem Traning und dem Verständnis, ich werden ebenfalls auch die Webserver- Verbindung mit TLS/SSL absichern, zusätzlich ist mein Ziel die Verschlüsselung der LDAP-Verbindungen und die Anbindung eines Drittdienstes um das ganze zu testen, bspw. ein Adressbuch oder irgendeine andere Software. Dies dient dazu herauszufinden ob alles so funktioniert wie vorgesehen.
Nun liegen mir diese Daten in einem CSV vor, leider wurden hier überhaupt keine Namenskonventionen eingehalten.
Die neue Namenskonvention lautet: Erste 3 Buchtsaben aus Vornamen + erste 3 Buchstaben aus Nachnamen, diese danach zufällig zusammenwürfeln bspw. adrbra oder bradra
Meine Idee wäre nun wie folgt.
Das CSV liegt in diesem Format vor:
Nachname,Name(ID),Typ,Beschreibung,Anzeigename,Position,Firma
Ein Beipsiel lautet also:
Braune,adrian.braune,Benutzer,Adrian Braune,Sekundar,Adrian Braune
An sich hier kein Problem und relativ leich zu migrieren, leider sind teilweise die Namen abgekürzt worden oder es sind Sonderzeichen darin vorhanden.
Hier ein paar Beispiele:
Boes,andreas.boes,Benutzer,A. B., Verwaltung,A. B., ,
Tegtmeier,car.teg,Benutzer,Carlotta Tegtmeier, Oberstufe - Matur,Carlotta Tegtmeier, ,
Meine Idee wäre also gewesen ein Perlscript zu schreiben, welches wie folgt ausgeführt wird:
Variable erstellen N=Nachname Danach alle Kommastellen durchgehen, jede Kommastelle einer Variable zuweisen. Prüfen ob der Nachname darin vorhanden ist, wenn ja dann -> Nachname rauslöschen mit allem was drinn ist (Leerzeichen,Punkte etc.) Vergeleiche die Einträge da wo das "Feld" Beschreibung+Position+und der Name(resp. die ID) ist, und wähle dann den grösseren String um sicher zu gehen, dass man den Vornamen ungekürzt erhält.
Zweck dafür ist es den richtigen Nachnamen herauszufinden, um diesen Sauber in das LDAP einpflegen zu können.
Leider bin ich halt ein absoluter Noob im programmieren, ich habe in einem Excel das CSV leserlich aufbereitet und dahinter bereits die Kennwörter gesetzt. Schliesslich müssen die User auch ein Kennwort erhalten, habe dafür bereits eine Liste mit 3000 Kennwörtern generiert. Sinnvoll wäre es wenn jeder Eintrag aus dem Password-File bspw. im gleichen Perl-Skript eingelesen wird. Somit wäre es dann auch einfacher die ganze Arbeit zu dokumentieren und ich wüsste welches Passwort welchem User gehört.
Das Passwort werde ich in Perl auf diese Weise dann hashen:
1 2 3 4 5 6 | use Digest::SHA1; use MIME::Base64; $ctx = Digest::SHA1->new; $ctx->add('secret'); $hashedPasswd = '{SHA}' . encode_base64($ctx->digest,''); print 'userPassword: ' . $hashedPasswd . "\n"; |
Mein aktueller Zustand in Perl ist bescheiden und verzweifelt... Darum frage ich nun euch 😢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | use Digest::SHA1; use MIME::Base64; $datei = "null"; print "\n"; print "======================================================================\n"; print "STARTEN SIE DAS SKRIPT IM GLEICHEN VERZEICHNIS WIE DIE DATEIEN LIEGEN!\n"; print "======================================================================\n"; print "\n"; print "Geben Sie die Datei an welche Sie bereinigen wollen. Es folgt ein Beispiel!\n"; print "\n"; print "Eingabe:2007.csv\n"; $datei = <STDIN>; chomp($datei); |
Alle Dateien findet ihr im Anhang.
Vielen Dank für eure (Mit)- Hilfe, bereits im Vorraus ☺
Ergänzung:
Ich habe bereits 5 Einträge bereinigt im LDAP, das Skript muss dies dann natürlich für den Upload/ den Ersatz korrekt formatieren resp. die richtigen Daten an den richtigen Ort schreiben bspw. dn,cn,uid etc. hier findet zusätlich ein Hashing mit einem Salt statt(Darum SSHA), soll aber zukünftig nicht so sein! Ein einfacher SHA1 reicht für meine Tests aus =)
# Eintrag 6: cn=Alfred Brandner,cn=Jahrgang 2007,ou=Sekundar,ou=Schueler,... dn: cn=Alfred Brandner,cn=Jahrgang 2007,ou=Sekundar,ou=Schueler,dc=ad,dc=ger tzenstein,dc=ch cn: Alfred Brandner gidnumber: 518 givenname: Alfred homedirectory: /home/users/alfbra objectclass: inetOrgPerson objectclass: posixAccount objectclass: top sn: Brandner uid: alfbra uidnumber: 1003 userpassword: {SSHA}fGFOVbJcCgYlzeqVaD2uTcGisDHwCXfk
Wenn ihr Vorschläge habt dürft Ihr auch in anderen Programmier/Skriptsprachen euch zum Ausdruck bringen 👍
Moderiert von rklm:
Möglicherweise personenbezogene Daten gelöscht. Was ist mit den Namen in diesem Posting? Sind die echt, haben die Personen zugestimmt?