Scripts sh création LDIF

Résolu/Fermé
got2be717 Messages postés 6 Date d'inscription mercredi 23 novembre 2011 Statut Membre Dernière intervention 28 mai 2018 - 23 nov. 2011 à 15:34
got2be717 Messages postés 6 Date d'inscription mercredi 23 novembre 2011 Statut Membre Dernière intervention 28 mai 2018 - 24 nov. 2011 à 15:48
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.

A voir également:

4 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 622
23 nov. 2011 à 16:12
hello
$ 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

$ 
1
salut,

regarde dans les Astuces du site, il y a un article sur la façon de lire un fichier en shell bash.
0
got2be717 Messages postés 6 Date d'inscription mercredi 23 novembre 2011 Statut Membre Dernière intervention 28 mai 2018
Modifié par got2be717 le 24/11/2011 à 13:08
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 ;-)
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 622
24 nov. 2011 à 14:24
quel 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
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 622
24 nov. 2011 à 14:33
edit
sinon mettre un \ en fin de ligne parce qu'on est dans un long string entre les "
0
got2be717 Messages postés 6 Date d'inscription mercredi 23 novembre 2011 Statut Membre Dernière intervention 28 mai 2018
24 nov. 2011 à 15:21
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
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 622
24 nov. 2011 à 15:36
sur SunOS, utiliser nawk plutot que awk
0
got2be717 Messages postés 6 Date d'inscription mercredi 23 novembre 2011 Statut Membre Dernière intervention 28 mai 2018
Modifié par got2be717 le 24/11/2011 à 15:50
Cooooool ça fonctionne. Je te remercie grandement :-)

J'ai fait les essais sous un système Linux ça fonctionne avec awk. J'ai fais les essais avec nawk sous SunOS ca fonctionne aussi. MERVEILLEUX !
0