Scripts sh création LDIF
Résolu
Bonjour,
j'aimerai créer un scripts ayant pour paramètre un fichier CSV me permettant de créer un fichier LDIF (pour import dans un annuaire LDAP).
Mon fichier CSV (user.csv) ressemble à ça :
Identifiant;nom;prénom;email;rh
TEST01;TEST1;TEST1;TEST1@TEST.fr;9702
TEST02;TEST1;TEST1;TEST1@TEST.fr;9703
et mon fichier LDIF ressemblerait à ça :
dn: uid=TEST01, ou=People
objectClass:blabla
cn: TEST1 TEST1
sn: TEST1
rh: 9702
name: TEST1
dn: uid=TEST02, ou=People
objectClass:blabla
cn: TEST1 TEST1
sn: TEST1
rh: 9703
name: TEST1
Mon script sh serait lancer de cette façon : ./script user.csv et devrait me ressortir un fichier user.ldif
Quelqu'un pourrait-il m'apporter un peu d'aide svp ?
Merci d'avance.
j'aimerai créer un scripts ayant pour paramètre un fichier CSV me permettant de créer un fichier LDIF (pour import dans un annuaire LDAP).
Mon fichier CSV (user.csv) ressemble à ça :
Identifiant;nom;prénom;email;rh
TEST01;TEST1;TEST1;TEST1@TEST.fr;9702
TEST02;TEST1;TEST1;TEST1@TEST.fr;9703
et mon fichier LDIF ressemblerait à ça :
dn: uid=TEST01, ou=People
objectClass:blabla
cn: TEST1 TEST1
sn: TEST1
rh: 9702
name: TEST1
dn: uid=TEST02, ou=People
objectClass:blabla
cn: TEST1 TEST1
sn: TEST1
rh: 9703
name: TEST1
Mon script sh serait lancer de cette façon : ./script user.csv et devrait me ressortir un fichier user.ldif
Quelqu'un pourrait-il m'apporter un peu d'aide svp ?
Merci d'avance.
4 réponses
-
Contributeurhello
$ awk -F";" '{printf "dn: uid=%s, ou=People\nobjectClass:blabla\ncn: %s %s\nsn: %s\nrh: %s\nname: %s\n\n",$1, $2, $2, $2, $5, $2}' user.csv > user.ldif $ $ cat user.ldif dn: uid=TEST01, ou=People objectClass:blabla cn: TEST1 TEST1 sn: TEST1 rh: 9702 name: TEST1 dn: uid=TEST02, ou=People objectClass:blabla cn: TEST1 TEST1 sn: TEST1 rh: 9703 name: TEST1 $ -
salut,
regarde dans les Astuces du site, il y a un article sur la façon de lire un fichier en shell bash. -
Bonjour et merci pour vos réponses qui m'ont grandement aidé.
Par contre, j'ai un léger problème :
Dés que mon script est sur plus d'un ligne j'ai un message d'erreur :
awk: string too long near line 1
awk: syntax error near line 1
awk: illegal statement near line 1
Comment faire pour exécuter mon traitement sur plus d'une seule ligne ?
Mon script :
awk -F";" '{printf "dn: uid=%s, ou=People, dc=gardiansesame\nobjectClass: gardianSesamePerson\nobjectClass: inetOrgPerson
\nobjectClass: organizationalPerson\nobjectClass: person\nobjectClass: top\ncn: %s %s\nsn: %s\nrh: %s\nname: %s\n\n",$1,
$2, $2, $2, $5, $2}' user.csv > user.ldif
D'avance merci ;-) -
Contributeurquel système ?
le code est bien sur une seule ligne ?
sinon mettre un \ en fin de ligne
ou mettre le code awk dans un fichier$ cat f1.awk {printf "dn: uid=%s, ou=People, dc=gardiansesame\nobjectClass: gardianSesamePerson\nobjectClass: inetOrgPerson \nobjectClass: organizationalPerson\nobjectClass: person\nobjectClass: top\ncn: %s %s\nsn: %s\nrh: %s\nname: %s\n\n",$1, $2, $2, $2, $5, $2} $ $ awk -F";" -f f1.awk user.csv > user.ldif-
-
Merci pour ton aide précieuse, mais le problème perdure.
Le système est SunOS.
Après avoir essayé avec un \ en fin de ligne et en mettant le code awk dans un fichier toujours les mêmes erreurs :
awk: string too long near line 1
awk: syntax error near line 1
awk: illegal statement near line 1
awk: newline in string near line 1 -
-
-