Script bash lftp

Je voudrais créer un script bash pour que lftp mette à jour un site web.

Le problème est que je ne suis pas le seul à gérer ce site. Je voudrais donc que lftp ne touche qu’à certains répertoires et ignore les autres (tout en faisant un mirror sur les répertoires que je veux modifier).

Pour l’instant, j’ai commencé à rédiger mon script (non testé) mais ne sais comment ajouter la condition d’ignorer tout autres répertoires que ceux spécifié.

#!/bin/bash                                                                     
HOST="mon_host"
USER="mon_user"
PASS="mdp"
LCD="repertoire/local"
RCD="repertoire/sur/le/ftp"
lftp -c "set ftp:list-options -a;                                               
set cmd:fail-exit yes                                                           
set -eu                                                                         
open ftp://$USER:$PASS@$HOST;                                                   
lcd $LCD;                                                                       
cd $RCD;                                                                        
mirror --reverse \                                                              
       --delete \                                                               
       --verbose "

je viens de tester mon script (même s’il ne fait pas encore exactement ce que je veux) et j’ai l’erreur suivante que je ne comprend pas :

$ ./script.sh ./script.sh: ligne 7: Caractère de fin de fichier (EOF) prématuré lors de la recherche du « " » correspondant ./script.sh: ligne 17: Erreur de syntaxe : fin de fichier prématurée

ok j’avais oublié d’enlever le / à la dernière ligne (j’ai corrigé dans le premier post).

Est-ce que cela ne serait pas plus sécurisé de mettre les identifiants de connexion dans .netrc ?

Étant donné que le .ntrc est un fichier au même emplacement que le script (~/) et avec les mêmes droits, je ne vois pas vraiment de différence au niveau de la sécurité.

Sinon pour le script, je suis arrivé à quelque chose qui marche mais qui n’est peut-être pas le plus simple/élégant :

Je rappelle que je veux copier (mirror) deux répertoires ainsi qu’un fichier à la racine du ftp sans pour autant modifier les autres répertoires/fichiers du ftp.

Ainsi le script suivant synchronise (du local vers le ftp) les répertoires “oui” et “ouioui” sur le ftp et met à jour le fichier index.html. Avec cette méthode, le fichier index.html est toujours remplacé même s’il n’est pas modifié mais je ne crois pas qu’il est possible de faire un “mirror” sur un fichier (et non un dossier) ???

#!/bin/bash HOST="XXXX" USER="XXXXXXX" PASS="XXXXX" lftp -c "set ftp:list-options -a; set cmd:fail-exit yes; open ftp://$USER:$PASS@$HOST; lcd /home/XXXXX/test/oui; cd /oui; mirror --reverse \ --delete \ --verbose; lcd /home/XXXX/test/ouioui; cd /ouioui; mirror --reverse \ --delete \ --verbose; cd / put /home/XXXXXXX/test/index.html;"

Ça ne serait pas plus joli quelque chose comme ça ?

[code]#!/usr/bin/lftp -f

set ftp:list-options -a;
set cmd:fail-exit yes;
open ftp://$USER:$PASS@$HOST;
lcd /home/XXXXX/test/oui;
cd /oui;
mirror --reverse
–delete
–verbose;
lcd /home/XXXX/test/ouioui;
cd /ouioui;
mirror --reverse
–delete
–verbose;
cd /
put /home/XXXXXXX/test/index.html[/code]
Le script est assez court du coup les valeurs à modifier sont à la ligne 3, mais pas de bash. Juste toi et lftp.