This site uses cookies! Learn More

Ce site utilise des cookies !

En continuant à utiliser ce site, vous vous engagez à nous permettre de stocker des cookies sur votre ordinateur.

 

Si nous utilisons des cookies et retenons des données anonymes, c’est pour nous aider à mieux gérer notre mesure d’audience, aider nos partenaires commerciaux à nous rémunérer et nos partenaires publicitaires à proposer des annonces qui vous correspondent.

 

Grâce à ces cookies, le forum est en mesure de savoir qui écrit un message et utile pour le système d'authentification.

 

En cliquant sur « J'accepte », vous acceptez l'utilisation par NAS-Forum de cookies publicitaires et de mesure d'audience fine.

Damien447

Script Ftp

Messages recommandés

Bonjour,

J'ai un script qui récupère des données sur un ftp... voici le script (c'est plus parlant):

#!/bin/sh
#
# Synchronise deux répertoires en utilisant FTP
HOST="*******"
LOGIN="*******"
PASSWORD="*******"
LOCALDIR="/volume1/Films/TELECHARGEMENT/Nouveau"
REMOTEDIR="/"
EXCLUDED="*.*~"
if lftp -c "set ftp:list-options -a;
open ftp://$LOGIN:$PASSWORD@$HOST;
lcd $LOCALDIR;
cd $REMOTEDIR;
mirror --delete
--verbose
--exclude-glob $EXCLUDED";
then
sh /volume1/Films/TELECHARGEMENT/envoimail.sh;
else
echo "err"
fi
Et donc ce script est exécuter tous les jours a 12h avec un cron :
0 12 * * * * root sh /volume1/Films/TELECHARGEMENT/download.sh 1>> log.txt
Donc mon soucis est que je souhaite donc récupérer les logs de téléchargement et les mettre dans un fichier txt et me les envoyer... Alors cela fonctionne quand je lance la cmd a la main mais pas en cron ? enfin la commande de téléchargement fonctionne j'ai bien les données mais soit j'ai pas de mails ou alors un mail vide avec un fichier de log vide.
Une idée?
Merci :)
ps le script envoimail.sh fonctionne c'est juste une ligne de commande pour envoyer par mail le fichier de log.

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est à dire?

Il manque la ligne "PATH="

**edit**

En cron, le shell n'exécute pas les profiles, se retrouve avec le PATH par défaut, et il ne peut pas deviner ou se trouve le binaire "lftp"

Modifié par CoolRaoul

Partager ce message


Lien à poster
Partager sur d’autres sites

Je met quoi dedans je suis assez perdu la... :/

Ca dépend ou se trouve la commande "lftp" sur ton NAS (ce n'est pas une commande standard DSM)

Si c'est un package optware il y a de forte chances que ceci fonctionne:

PATH=/opt/bin:/bin:/usr/bin
Modifié par CoolRaoul

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah oui d'accord.. Mais en fait le script fonctionne avec le cron enfin j'ai bien mes fichiers qui se téléchargent mais le soucis est que j'ai l'impression que le "1>>" n'ecrit pas dans le log..

Partager ce message


Lien à poster
Partager sur d’autres sites

Et donc ce script est exécuter tous les jours a 12h avec un cron :

0 12 * * * * root sh /volume1/Films/TELECHARGEMENT/download.sh 1>> log.txt

Tant qu'a faire, ajoute aussi la sortie d'erreur a ton log, ca sera mieux:

remplacer

1>> log.txt

par

>>log.txt 2>&1

**edit**

Autre chose, faudrait spécifier le chemin *complet* du fichier log, et le mieux est de faire ça *dans* le script en y ajoutant la ligne:

exec >> /tmp/ftp_mirror.log 2>&1
Modifié par CoolRaoul

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est pour la sortie ecran ?

Sous unix il y a toujours *deux* sorties pour chaque process: la sortie standard (descripteur 1) et la sortie d'erreur (descripteur 2)

la simple redirection (">" ou "1>") ne redirige que la première.

Partager ce message


Lien à poster
Partager sur d’autres sites

Et cela devrait regler mon probleme? :)

Avec la double redirection ("> bidule" suivi de "2>&1") le fichier log contiendra l'intégralité des messages émis par ton script si c'est bien de ça qu'il s'agit.

Modifié par CoolRaoul

Partager ce message


Lien à poster
Partager sur d’autres sites

Autre chose, faudrait spécifier le chemin *complet* du fichier log, et le mieux est de faire ça *dans* le script en y ajoutant la ligne:

exec >> /tmp/ftp_mirror.log 2>&1

J'ai deja mis le chemin complet par contre je vois pas se que tu veux dire : "le mieux est de faire ça *dans* le script "

********************

Enfin a quel niveau je dois/peux faire cela (rediriger les sorties) dans le script.

Modifié par Damien447

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai deja mis le chemin complet par contre je vois pas se que tu veux dire : "le mieux est de faire ça *dans* le script "

********************

Enfin a quel niveau je dois/peux faire cela (rediriger les sorties) dans le script.

en mettant la ligne "exec" que j'ai donnée dans le script (en début)

Partager ce message


Lien à poster
Partager sur d’autres sites

Donc logiquement j'ai plus besoin de cela :

0 12 * * * * root sh /volume1/Films/TELECHARGEMENT/download.sh 1>> log.txt 2>$1

en effet

**EDIT**

petite astuce en prime, tel quel le script va *toujours* écrire dans le log.

Si tu veux que la sortie continue à aller à l'écran lorsque tu l'exécute "à la main" remplace:

exec >> /tmp/ftp_mirror.log 2>&1

par

[ -t 0 ] || exec >> /tmp/ftp_mirror.log 2>&1

Le test préalable ("-t 0") à pour effet que la redirection ("exec >>") soit effectuée *uniquement* lorsque l'entrée standard n'est pas un terminal (ce qui est justement le cas en cron mais pas en ligne de commande).

Modifié par CoolRaoul

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

tu pourrais mettre en ligne le contenu du script permettant d'envoyer un mail en ligne de commande?

Jusqu'à il y a peu, j'utilisais "nail" via ipkg, mais ça ne marche plus depuis les récentes mises à jour de DSM. Je suis preneur de la syntaxe permettant de faire cela avec des commandes natives de DSM.

Merci d'avance

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.