Bonjour à tous,
Je suis actuellement en train de travailler sur un script d'interrogation d'un annuaire LDAP. Pour cela, j'utilise la commande ldapsearch -L (avec tout le reste du bazar derrière).
Tout fonctionne bien à un détail prêt. En effet, quand ldapsearch rencontre une valeur avec un caractère non-ASCII (exemple, caractères accentué tel que ô), il convertit toute la valeur en base64. C'est son comportement normal (allez savoir pourquoi
J'ai recherché sur internet, un moyen de convertir cette valeur avec ma machine: base64 -d fic ou iconv -f encode -t decode < input.txt > output.txt ne fonctionnent pas sur ma machine malheureusement.
J'en ai trouvé une autre qui fonctionne très bien: perl -MMIME::Base64 -le 'print decode_base64("Q29udHL0bGV1cg==")'
Maintenant, mon but est de l'intégrer dans ma phase de traitement de mon fichier de départ (où je fait divers modifications pour la suite de mon script). Comme je n'ai que certaines lignes qui me pose soucis, je suis partis sur un awk afin d'identifier la ligne que je désire et récupérer la valeur pour la décoder et la remplacer.
Je pense qu'il s'agit surtout d'un jeu de ' et ", mais j'ai du mal avec.
Voici mon code actuel, non fonctionnel pour le awk. Je n'ai pas encore trouvé le moyen également de remplacer la valeur. Je suis preneur si vous avez la solution
Extrait de ce que j'ai au départ
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 (ldapsearch -h ${ANNUAIRE}:389 -D "cn=${CNLDAP},ou=applications,ou=dgfip,ou=mefi,o=gouv,c=fr" -w ${PASS} -b "o=gouv,c=fr" -L profilApplicatif="${APPLI_LDAP};*" && echo) > $FIC_LDAP_FULL_ORI cat $FIC_LDAP_FULL_ORI\ | sed -e "s/: /=/g"\ | sed -e :a -e '$!N;s/\n //;ta' -e 'P;D'\ | perl -pe "s/<(?:NAME|ACLVALUE)>([^<]*)<\/(?:NAME|ACLVALUE)>/=\1=/g"\ | awk -F "=" ' /^title:/ {'titre_modif=$(perl -MMIME::Base64 -le "print decode_base64('$2')")' #convertir #remplacer } ' > $FIC_LDAP_FULL
Extrait de ce que je souhaite à l'arrivé pour les lignes concernées[...]
niveauResponsabilite=0
cn=MARTIN Toto
shadowWarning=0
sambaNTPassword=56CB650529473044871E6C49A6776070
profilApplicatif=EDP;USER
title:=Q29udHL0bGV1cg==
[...]
J'ai déjà l'avantage d'avoir comme intitulé de ligne title:= pour mes valeurs en base64. Les lignes sans souci commence par title=. Ca aide déjà beaucoup à trouver les lignes à corriger.[...]
niveauResponsabilite=0
cn=MARTIN Toto
shadowWarning=0
sambaNTPassword=56CB650529473044871E6C49A6776070
profilApplicatif=EDP;USER
title:=Contrôleur
[...]
Merci de votre aide.
Partager