#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
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
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