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):
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:
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 !
Partager