Howto: Clone LDAP Server

Alles Zeugs mit slapcat und slapadd hat bei mir nicht funktioniert. Nur zum festhalten:

$ slapcat -l ldapdump-$(date -I).ldif
$ slapadd -l ldapdump-$(date -I).ldif

Hier hat jemand wohl erfolg gehabt…

Was bei mir gut funktioniert hat war den neuen LDAP erst einmal mehr oder weniger so aufzusetzen wie den alten, also gleiche DN und schemas drin (dpkg-reconfigure slapd). Anschliessend habe ich mit ldapsearch auf dem alten Server alles exportiert und mit ldapadd auf dem neuen Server importiert:

$ ldapsearch -x -LLL > ldapdump-$(date -I).ldif
$ ldapadd -x -D "cn=admin,dc=example,dc=org" -W -f ldapdump-$(date -I).ldif

Der entscheidene Hinweis kam von hier.

— UPDATE 2013-07-31 —

Bei dem Export mittels ldapsearch sicherstellen, dass auch die userPassword: Eintraege mit exportiert werden. Ansonsten muss man sich gegebenenfalls authentifizieren zum Beispiel mit:

$ ldapsearch -x -LLL -H ldap://127.0.0.1:389 -D "cn=admin,dc=example,dc=org" -W | gzip > $(date -I)-ldapdump.ldif.gz

Microsoft Office Probleme

Wenn jedes mal beim Starten der Setup Assistent startet, dann in der Registry unter

  • HKEY_CURRENT_USERSoftwareMicrosoftOffice14.0WordOptions

einen DWORD erstellen mit NoReReg = 1

Wenn sich alte Dokumente mit einer Fehlermeldung nicht mehr oeffnen lassen (z.B. Office 2007 und Dokument von 1995) dann in der Registry unter

  • HKEY_CURRENT_USERSoftwarePoliciesMicrosoftOffice12.0WordSecurityFileOpenBlock

einen DWORD erstellen mit FilesBeforeVersion = 0

aptitude mit search pattern; Systeme ohne DNS; Apache Satisfy Direktive; bash Bedeutung der Klammern

  1. Loeschen von Paketen mittels aptitude und search pattern um mehrere Pakete gleichzeitig zu loeschen, aber nicht alle hintereinander einzugeben. Das kann man mit ~n. Hier ein klassisches Beispiel wo ich das anwende. Rausfinden welcher Kernel gerade laeuft, rausfinden was es alles an alten Kernel Images auf dem System gibt, loeschen aller linux-image-2.6.32-3*:
    $ uname -a
    $ sudo aptitude search linux-image | grep "^i"
    $ sudo aptitude purge ~nlinux-image-2.6.32-3
  2. Manchmal hat man Systeme, bei denen kein DNS verfuegbar ist. Das fuehrt dann dazu, dass einige Sachen extrem lange dauern, weil Sie versuchen irgendetwas ueber DNS aufzuloesen und dann erst weiter machen wenn es einen Timeout gibt. Als erstes sollte man dann pruefen, dass der eigene Hostname in der /etc/hosts korrekt auf localhost gemappt ist. Oft rgibt es dann auch noch Sinn in der /etc/ssh/sshd_config den folgenden Schalter zu aktivieren:
    UseDNS no
  3. Manchmal moechte man bei einem Apache Webserver etwas fuer einen bestimmten IP Bereich direkt freigeben, und ansonsten soll ein Passwort eingegeben werden. Jeweils das eine von beiden ist einfach realisiert. Wenn man beides moechte, braucht man die Satisfy Direktive. Klassisches Beispiel dafuer:
            <Location "/foo">
                    Order deny,allow
                    Deny from all
                    AuthName "Foo Login"
                    AuthUserFile /path/to/.htpasswd
                    AuthType Basic
                    Require valid-user
                    Allow from 192.168
                    Satisfy Any
                    ProxyPass http://localhost:8080/foo/ timeout=6000
                    ProxyPassReverse http://localhost:8080/foo/
            </Location>
  4. bash Klammern. Immer wieder spannend, deswegen hier mal eben aus meinem Kopf heraus festgehalten wie ich mit ihnen arbeite:
    • () = Subshell. Benutze ich zum Beispiel beim anlegen von Sicherheitskopien mit:

       $ mv foo.txt foo.txt-$(date -I)
    • [] in Schleifen = Ruft das Programm „[“ auf, oder auch „test“. In einer if [ ! -d „/tmp“ ]; echo „directory /tmp does not exist.“; fi Schleife wird bei dem [ das Programm mit dem Namen „[“ aufgerufen. Liegt zum Beispiel unter /usr/bin/[ und hat auch eine eigene manpage.
    • [[]] in Schleifen = Bash eigene Funktion. Darin kann man dann auch Regex verwenden. Beispiel

      $ FOO=1234
      $ if [[ $FOO =~ ^[0-9]*$ ]]; then echo "OK"; else echo "NO"; fi
      OK
      $ FOO=1234a
      $ if [[ $FOO =~ ^[0-9]*$ ]]; then echo "OK"; else echo "NO"; fi
      NO
      $
    • {} = Variablen und Listen. Ich nutze das um in Skripten Variablen besser ersichtlich zu machen, zum Beispiel

      /bin/bash
      FOO=foo.txt
      mv ${FOO} ${FOO}_$(date -I)

      Ausserdem fuer Listen, zum Beispiel wenn man mehrere Ordner mit Unterordnern anlegen moechte:

      mkdir -p /tmp/foo/bar/{one,two,three,four}/

      Nicht zu vergessen die ganzen build-in Shell Funktionen bei den Klammern, z.B. hier, da, dort, guckstu, minneminne

Stichpunkte vom Wochenende

  1. Meine Freundin berichtet mir seit langem von einer stockenden Maus an Ihrem Laptop (Acer Extensa 5635Z). Das Problem trat bei Benutzung des Touchpads genauso wie bei einer externen Maus auf. Die Ursache scheint X zu sein und die Loesung liegt im deaktivieren von DRM_KMS_POLLING im Kernel. Mehr dazu hier.
  2. Mittels imagemagick Bilder in der Mitte teilen und in zwei separaten Bildern abspeichern:
     convert sample.jpg -crop 50x100% +repage small_%d.jpg
  3. Musikdateien von mpc zu mp3 konvertieren:
     for i in *.mpc ; do mpcdec "$i" - | lame -h -b 192 - "${i%mpc}mp3" ; done
  4. Um ansonsten Musik von A nach B zu konvertieren ist soundconverter ganz gut und zum Taggen, Dateien umbenennen etc. hab ich jetzt schlechte Erfahrungen mit tagtool und bessere Erfahrungen mit easytag gemacht.
  5. Das Tool bliss ist hier echt noch einmal einen Eintrag Wert, weil es saucool ist!