Page 1 sur 1

[SHELL] transfert scp avec ecriture de logs [résolu]

Publié : jeu. 28 févr. 2008, 12:45
par ee_lars
Bonjour,

J'ai écrit un script shell qui fait des copies de fichiers de plusieurs serveurs vers une machine grâce à la commande scp (dans le but de centraliser des sauvegardes).

J'ai donc plusieurs lignes de ce type :
scp $USER@$SERVEUR:/data/sauve/fichier.tar $CHEMIN/$SERVEUR/

l'execution de cette commande dans un shell affiche ce genre d'informations :
fichier.tar 100% 228MB 11.4MB/s 00:20

Mon script est lançé via la crontab:
00 02 * * * /chemin/mon_script.sh >/chemin/copie.log

j'ai besoin d'afficher ces informations dans mon fichier de log mais elles n'apparaissent pas...
Connaissez vous un moyen de le faire svp???

Publié : jeu. 28 févr. 2008, 13:22
par vincentxavier
as tu essayé un truc du genre

Code : Tout sélectionner

/chemin/mon_script.sh 2>&1 >/chemin/copie.log 
 
qui redirige la sortie d'erreur (2) vers la sortie standard (1)

Publié : jeu. 28 févr. 2008, 13:35
par marc[i1]
Modifie ton sujet comme ceci :
[Thème] sujet
Afin de respecter les règles du forum :
http://forums.archlinux.fr/topic68.html

merci

Publié : jeu. 28 févr. 2008, 14:23
par tuxce
salut, scp n'écrit rien sur stdxxx s'il y a redirection, il te faut tester manuellement, genre:

Code : Tout sélectionner

file=$SERVEUR:/data/sauve/fichier.tar
scp -q $file $CHEMIN/$SERVEUR/ && echo -n "Succès: " || echo -n "Echec: "
echo $file

Publié : jeu. 28 févr. 2008, 14:32
par ee_lars
vincentxavier a écrit :as tu essayé un truc du genre

Code : Tout sélectionner

/chemin/mon_script.sh 2>&1 >/chemin/copie.log 
 
qui redirige la sortie d'erreur (2) vers la sortie standard (1)

Oui j'ai essayé mais ça ne retourne rien dans le fichier indiqué en sortie

Publié : jeu. 28 févr. 2008, 15:40
par ee_lars
tuxce a écrit :salut, scp n'écrit rien sur stdxxx s'il y a redirection, il te faut tester manuellement, genre:

Code : Tout sélectionner

file=$SERVEUR:/data/sauve/fichier.tar
scp -q $file $CHEMIN/$SERVEUR/ && echo -n "Succès: " || echo -n "Echec: "
echo $file
Mon but n'est pas d'interpreter le résultat.
Je veux juste avoir le nom des fichiers qui sont copiés, avec leur taille et la durée de la copie (toutes ces infos sont données par la commande scp quand on l'execute dans un shell) si cela est possible bien sur :)

Publié : jeu. 28 févr. 2008, 17:00
par tuxce
en redirection, c'est pas possible, scp désactive la sortie si stdout ne lui appartient pas.
par contre, tu peux contourner en utilisant par exemple screen:

Code : Tout sélectionner

screen -d -m -L scp $USER@$SERVEUR:/data/sauve/fichier.tar $CHEMIN/$SERVEUR/
ca permet de créer un screen sans pour autant s'y connecter (-d -m)
et en même temps, logguer le contenu (-L)
le nom fichier par défaut est $(pwd)/screenlog.X (X étant le numéro de l'écran virtuel)

Publié : jeu. 28 févr. 2008, 18:30
par ee_lars
Très bonne idée, je vais tester ça :)
Merci

Publié : ven. 29 févr. 2008, 10:33
par ee_lars
Ca fonctionne parfaitement!!!!

Voila qui va m'être d'une grande utilité :)
Merci beaucoup tuxce