• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Perl Variablenproblem

Hallo,

ich habe mir eine kleine Perl-Anweisung geschrieben, um in einem LDIF -File mit unverschlüsselten Passwörtern diese verschlüsseln zu lassen. Die Anweisung sieht wie folgt aus:

Code:
perl -ne "if (/(userPassword: )(.*)/) { \$cp=\`slappasswd -s \$2 -h {${CRYPT}} \`; print \"\$\`\$1\$cp\$'\";} else { print; }" < $1 > $2

edit:
-
Das CRYPT wird vorher gesetzt mit dem Verschlüsselungsverfahren, entspricht also nicht unbedingt dem {CRYPT}. Das Verfahren auf Konsole und hier im Script ist aber identisch :wink:
-

Das Problem ist, dass er ein falsches Passwort erzeugt, d.h. wenn ich auf der Konsole z.B.:

Code:
slappasswd -s test -h {SHA}

eingebe, kommt was anderes raus, als das was das die Anweisung erzeugt.

Wenn ich in der Anweisung "-s \$2" durch "-s test" ersetze, wird das richtige Passwort erzeugt.

Wenn ich hinten statt $1 $2 angebe, um zu testen, dass das Richtige in $2 steht, schreibt er das korrekte Klartextpasswort hin, d.h. theo steht in $2 das Richtige.

Wie schaffe ich es jetzt mit meiner Anweisung, dass das richtige Passwort rauskommt?

MfG
 
Hi,

Kann es sein das Du die Regexp noch ein wenig genauer vormulieren musst
so wie:

Code:
perl -ne "if (/(userPassword: )([a-zA-Z_0-9]+)/) { \$cp=\`slappasswd -s \$2 -h {${CRYPT}} \`; print \"\$\`\$1\$cp\$'\";} else { print; }" < $1 > $2

Wenn das nicht klappt währe es ganz schön wenn du mal eine Beispiel Zeile von
dem File angeben könntest.


Gruss,

Fodus
 
Da er bei testweiser Änderung in

Code:
print \"\$\`\$2\$cp\$'\";

das richtige Klartextpasswort ausgibt, sollte das passen.

das LDIF hat die Form:

Code:
dn: cn=test01,ou=Users,o=testorg,dc=testing,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: test01
uid: test01
sn: tester
givenName: test
mail: test.tester@testing.com
postalAddress: Test Street$$Sydney$ $Australia$1234
title: Testuser
telephoneNumber: +123 456 789
userPassword: test(§erfg

Hier soll halt das userPassword verschlüsselt werden.

MfG
 
Oben