Précédent   Forum du club des développeurs et IT Pro > Systèmes > Linux > Shell et commandes GNU
Shell et commandes GNU Vos questions sur l'utilisation des commandes shell. Manuel Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 09h20   #1
cbo99
Invité de passage
 
Homme
Inscription : janvier 2013
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : janvier 2013
Messages : 2
Points : 0
Points : 0
Par défaut ftp et redirection

Bonjour,

J'ai développé il y a quelques mois un script ftp générique pour AIX et SUN. Je porte aujourd'hui ce script sur linux redhat et je suis confronté à un comportement étrange lors de l'exécution d'une commande ftp en mode batch.

Voici un exemple de fichier de commande (cmd.txt):

Code :
1
2
3
4
5
6
7
8
user monuser monpassword
ascii
lcd monRépertoireLocal
cd monRépertoireDistant
verbose
!echo "###FILE_LIST_START###"
dir *.txt
!echo "###FILE_LIST_END###"

Lorsque je lance la commande ftp -nvi host <cmd.txt, j'obtiens l'output suivant:

Connected to host(ip).
220 host FTP server (Version 4.2) ready.
Remote system type is UNIX.
Using binary mode to transfer files.
331 Password required for ****.
230-Last login: Tue Jan  8 15:34:08 NFT 2013 on ftp from ******
230 User **** logged in.
200 Type set to A; form set to N.
Local directory now monRépertoireLocal
250 CWD command successful.
Verbose mode off.
###FILE_LIST_START###
-rw-r--r--    1 ******  ****** 712580 Jan 08 06:10 file1.txt
###FILE_LIST_END###
=> L'output suit correctement l'enchaînement des commandes du fichier cmd.txt


Maintenant lorsque je lance la même commande mais en redirigeant l'output dans un fichier:

Code :
ftp -nvi host <cmd.txt 1>toto.txt 2>&1
J'obtient (cat toto.txt) :

Connected to host(ip).
220 host FTP server (Version 4.2) ready.
Remote system type is UNIX.
Using binary mode to transfer files.
331 Password required for ****.
230-Last login: Tue Jan  8 15:34:08 NFT 2013 on ftp from ******
230 User **** logged in.
200 Type set to A; form set to N.
Local directory now monRépertoireLocal
250 CWD command successful.
###FILE_LIST_START###
###FILE_LIST_END###
Verbose mode off.
-rw-r--r--    1 ******  ****** 712580 Jan 08 06:10 file1.txt

L'output des commandes locales sont redirigés avant l'output des commandes distantes ?!


Après plusieurs heures de recherche je ne comprend pas ce comportement ni même un moyen de contourner ce problème sans modifier une grande partie de mon script qui doit rester générique (AIX|SUN|LINUX)


J'espère être suffisamment clair dans l'explication
Il est très simple de reproduire ce cas.

Toutes les idées ou suggestions sont les bienvenues !


Merci d'avance !
cbo99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 09h35   #2
frp31
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 4 224
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 36
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 4 224
Points : 10 425
Points : 10 425
pour qu'un script soit GARANTI multi plateforme quelque soient les évolutions futures de chacunes il est impératif d'appliquer la méthode suivante :
  1. identifier la plateforme
  2. lancer une fonction spécifique à la plateforme (donc 3 sous-scripts qui eux sont spécifiques)

toute autre méthode est à proscrire définitivement



quand à ton problème de redirection tu peux tester avec un pipe tee plutot qu'une redirection d'autant plus que tu redirige 1> alors que > sera plus pertinant pour logguer un ftp...
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2013, 09h57   #3
cbo99
Invité de passage
 
Homme
Inscription : janvier 2013
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : janvier 2013
Messages : 2
Points : 0
Points : 0
Merci de ta réponse rapide.
J'avais déjà essayé plusieurs solutions dont "| tee" mais sans succès.

Je comprend bien le fait de splitter le script en différentes fonctions, mais avant d'en arriver là, j'aurais aimé comprendre pourquoi le comportement est différent sur cette plateforme.

Je suis juste curieux


Merci en tout cas.
cbo99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h39.


 
 
 
 
Partenaires

Hébergement Web