Active Directory Export in LDAP

Möglichkeit und Notwenidgkeit von Stringmanipulation und Beachtung von erhöhter Sicherheit und Schnelligkeit.

Ein Export von Daten aus dem Microsoft Active Directory im ldif Format ist in der realen Welt eigentlich unbrauchbar. Die Bezeichnung vieler Organizational Units (OU) sind nicht Standardkonform. Für den Import der Daten in ein LDAP Verzeichnis fehlen auch Angaben.

Für die Textmanipulation eignet sich ein Bash Script hervorragend. Was aber, wenn man dem User keinen Einblick gewähren möchte und die zu importierende Datei mehrere zehntausend Datensätze enthält?

Das Standard C – ANSI C – bietet eine Fülle an Werkzeugen zur Text- und Dateimanipulation. In dem Listing (Link) sind mehrere verschiedene Möglichkeiten verwendet.

Aufgabe war, eine Datei aus dem AD im ldif Format einzulesen, das Schema zu verändern und die OU sAMAAccountName, organizaltionalPerson und weitere zu ersetzen, eine gidnumber, member sowie ein userpassword einzusetzen. Das Passwort muss LDAP konform als salted SHA, mehr oder weniger, zufällig generiert werden.

Spielen wir in den nächsten Clubtreffen ein bisschen an den Befehlen die Zeichenweise (fgetc) oder Wortweise (fgets) Strings verarbeiten. Auch habe ich verschiedene Varianten des Filehandlings programmiert.

Automationstechnik in Faktura

Sehr viel Spass hatte ich an einem Projekt, in dem ich eine betriebswirtschaftliche Anwendung entwickelte, diese auch Meßwerte auslesen und Maschinen steuern

8085 Assembler
8085 Assembler

soll. Vorher hatte ich nur im Labor Kontakt mit der Steuerungsprogrammierung und das geschah seiner Zeit mit der Programmiersprache Assembler ( üblicher Prozessor war der 8085 ). Heute benutze ich Phyton, Cobol, Basic oder Pascal – Assembler, C oder Fortran ist mir zu technisch und wende ich nur für systemnahe oder zeitkritische Programme an. In dem besonderen Fall, im Zusammenspiel von Linux-Server und SPS Anlage, war C die Programmiersprache der Wahl. Ich fand mich mit der Siemens S5 SPS Anlage schnell zurecht und bediente mich der OpenSource Bibliothek LIBNODAVE.

Das Programm ist einfach zu kompilieren und funktioniert sehr zuverlässig. In meiner Anwendung, werden die Anforderungen zur Meßwerterfassung und Schaltbefehle in einer SQL Datenbank gesammelt – als chronologischen Dienst sorgt das in C geschriebene Programm für die Umsetzung. Angesteuert wird die S5 über die serielle Schnittstelle ( /dev/ttyS0 ).

Schwierig war, das in der Simatic S5, Zähler ( in dem Fall Verbrauchsmesser ) mit unterschiedlichen Faktoren eingebaut werden konnten. So hat ein

( dc = daveNewConnection(di,plcMPI,0,0); )
/* Deklarationen lasse ich hier mal weg */
Ergebnis = daveReadS5Bytes(dc, daveDB, atoi(DBNr),atoi(WasserDW), 2);

Programmierung in C
Programmierung in C

Zaehler = daveGetU16(dc);

nicht zwingend auf jeder DBNr das gleiche Zahlenverhältnis ( Verhältnisfaktor 1, 10 oder 100 zum Zähler) auch wenn die Art identisch ist. In der Programmierung musste dann auch der Typ des S5 Moduls berücksichtigt werden und das Meßergebnis durch

fZaehler = (float) Zaehler * atof(Faktor);

korrigiert werden. Unproblematisch hingegen das schreiben, also das Ein/Aus schalten von Relais, mit daveWriteS5Bytes(dc, daveDB, 4, 2, 2, &a);.