Fichier log dans le répertoire du script [Résolu/Fermé]

Signaler
Messages postés
90
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
24 octobre 2015
-
Messages postés
90
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
24 octobre 2015
-
Bonjour,

J'essaye de de générer un script shell pour mettre à jour un site web via la commande LFTP.
J'utilise l'option --log pour générer un fichier log.
Grossièrement :
#!/bin/sh
lftp -e 'mirror --log=fichier.log -R SRC DEST -u USER,PASS HOST;


Mon petit problème est que le script peut être exécuté en ligne de commande de plusieurs endroit se qui fait que le fichier log n'est jamais au même endroit.

Y a-t-il une syntaxe pour qu'il soit toujours dans le répertoire du script ?
(sans pour autant spécifier le chemin absolu)

Merci d'avance !

7 réponses

Messages postés
35916
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
1 décembre 2020
5 692
Sinon, essaie ça :

#!/bin/sh
lftp -e 'mirror --log='"${0%/*}/"'fichier.log -R SRC DEST -u USER,PASS HOST;
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
90
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
24 octobre 2015
8
Merci zipe31 ! ça fonctionne... ;)
#!/bin/sh

HOST=""
USER=""
PASS=""
SRC=""
DEST=""
LOG=${0%/*}"/fichier.log"

echo $LOG
lftp -e 'mirror --log='$LOG' --verbose=1 -R '$SRC' '$DEST' set ftp:list-options -a' -u $USER,$PASS $HOST;


Bonne continuation.
Messages postés
5446
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 novembre 2020
914
Salut Tchupacabra,

Essayes :

#!/bin/sh
lftp -e 'mirror --log=$(pwd)/fichier.log -R SRC DEST -u USER,PASS HOST;


Dal
Messages postés
90
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
24 octobre 2015
8
Je viens de faire le test... sans succès.
mirror: $(pwd)/fichier.log: Aucun fichier ou dossier de ce type
Messages postés
90
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
24 octobre 2015
8
correction :
#!/bin/sh
lftp -e 'mirror --log='$(pwd)'/fichier.log -R SRC DEST' -u USER,PASS HOST;


Le fichier log est quand même généré dans le dossier courant de la console... et non du dossier du script.
Messages postés
35916
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
1 décembre 2020
5 692
Salut,

sans pour autant spécifier le chemin absolu
Ben pourquoi ? Ça serait quand même le plus simple, non ?
Messages postés
5446
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 novembre 2020
914
Je n'avais pas vu que les commandes mirror sont dans une chaine (tu as mis un ' ouvrant, mais pas fermant). Aussi, je réalise que tu ne veux pas mettre le fichier log dans le répertoire d'où ton script en lancé, mais dans celui où réside ce script.

Alors, peut-être ceci ira mieux :

#!/bin/sh
SCRIPTDIR=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
LFTPCOMMAND="'mirror --log=$SCRIPTDIR/fichier.log -R SRC DEST -u USER,PASS HOST;'"

lftp -e $LFTPCOMMAND


Dal
Messages postés
5446
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 novembre 2020
914
En fait, comme tu n'as sans doutes pas besoin du chemin absolu, tu pourrais sans doutes te contenter d'obtenir le chemin relatif comme cela :

SCRIPTDIR=$0


Dal
Messages postés
35916
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
1 décembre 2020
5 692
Salut [Dal],

En fait "$0" renvoie le chemin + le nom du script, d'où mon "${0%/*}" dans le message précédent ;-))
Messages postés
5446
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 novembre 2020
914
Oui, tu as raison :-)