Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/09/2015, à 09:29

abach

[shell] Intégrer un fichier CSV comme paramètres

Bonjour à tous et à toutes,

J'ai fait un script que je lance 1 fois / semaine qui ma rapatrie via LFTP plusieurs sites Internet.
Pour cela, je m'appuie sur une fnction que j'ai crée et que je lance pour chacun des sites.
Actuellement, parce que je ne sais pas comment faire du tout, je lance ça d suivante

mafonction id passord serveur_frp

J'ai mis les 3 paramètres (id, passord, servur_ftp) directement dans le code ce qui ne me plait pas du tout.

Je voudrais les mettre dans un fichier "CSV", importer ce fichier CSV dans une table shell et passer les paramètres à mafonction.

J'ai peut être mal cherché sur le Net mais je n'ai pas trouvé ou compris ce que j'ai trouvé. Le fait est que je n'arrive pas à faire cette injection...


Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux

Hors ligne

#2 Le 10/09/2015, à 15:38

genma

Re : [shell] Intégrer un fichier CSV comme paramètres

Je te propose de faire ça. Le fichier csv aura pour séparateur le ;
Ca marchera. Si tu ne connais pas, tu apprendras les boucles en shell et la commande awk (une des fonctions de cette commande)

#!/bin/bash
#On le fichier avec la commande cat et pour chaque ligne du fichier
for line in `cat monfichier.csv`
do
    #on verifie que ça lit bien la ligne
    echo $line 
    # on fait un echo de la ligne en entier, que l'on filtre avec la commande awk sur le ";"
    # On récupère les arguments un à un dans des variables
    id =`echo $line | awk -F";" '{ print $1 }'`
    password =`echo $enreg | awk  -F";" '{ print $2 }'`
    serveur_ftp=`echo $line | awk  -F";" '{ print $3 }'`
     #appel de la fonction shell que tu as faites en lui passant les 3 variables/arguments issus de la lecture du fichier
     mafonction $id $passord $serveur_ftp
done

C'est une façon de faire, y en a d'autres.
comme

mafonction  `cat monfichier.csv | awk  -F";" '{ print $1, "  " ,  $2, "  " , $3 }'`

si le fichier n'a qu'une ligne et pas besoin de boucler.

Dernière modification par genma (Le 10/09/2015, à 15:43)


"Lorsque tu as découvert le libre, tu sais que tu ne pourras plus jamais revenir en arrière".
Utilisateur d'Ubuntu depuis la version 4.10 !
Mon blog ?      https://blog.genma.fr
Mon twitter?     http://twitter.com/genma

Hors ligne

#3 Le 10/09/2015, à 19:01

abach

Re : [shell] Intégrer un fichier CSV comme paramètres

Merci pour ta réponse !

J'ai adopté la 1ère solution. J'ai 3 lignes dans mon fichier "paramètres" et, tel qu'est le programme, il lance les 3 itérations sans attendre que la précédente soit terminée. Faut-il rajouter quelque chose à la fin de ma fonction ? Je pensais à un truc genre "&&".


Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux

Hors ligne

#4 Le 10/09/2015, à 19:56

pingouinux

Re : [shell] Intégrer un fichier CSV comme paramètres

Bonsoir,
Je ne conseillerais pas de stocker des mots de passe dans un fichier, mais si tu tiens à le faire

while IFS=";" read id password serveur_ftp
do
   mafonction "$id" "$password" "$serveur_ftp"
done <monfichier.csv

Cette méthode marchera même si les champs (séparés par des ;) contiennent des espaces.

Hors ligne

#5 Le 10/09/2015, à 20:09

abach

Re : [shell] Intégrer un fichier CSV comme paramètres

pingouinux a écrit :

Bonsoir,
Je ne conseillerais pas de stocker des mots de passe dans un fichier, mais si tu tiens à le faire

Je suis d'accord avec toi mais je récupère, en lftp, mes sites Internet... Les mots de passe sont pour le moins capilotractés et je ne vois pas comment faire pour me passer de ce fichier "paramètres".

Cela dit, je viens de mettre ta procédure en place et elle marche impeccablement smile

Encore merci


Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux

Hors ligne

#6 Le 11/09/2015, à 08:55

genma

Re : [shell] Intégrer un fichier CSV comme paramètres

Si ça marche, pense à mettre en résolu le sujet. Merci.


"Lorsque tu as découvert le libre, tu sais que tu ne pourras plus jamais revenir en arrière".
Utilisateur d'Ubuntu depuis la version 4.10 !
Mon blog ?      https://blog.genma.fr
Mon twitter?     http://twitter.com/genma

Hors ligne