CODE RETOUR FTP (URGENT SVP)

Fermé
bsad - 27 févr. 2002 à 14:33
 bsaad - 24 avril 2002 à 17:40
Bonjour,
Dans un script shell, j'appelle une commande FTP et je veux tester si le FTP s'est bien déroulé, comment tester le code retour ?
Voilà un exemple :
#!/bin/sh
# commandes
# appel d'un script shell quit fait le put de ftp
./put.csh
cr=$?
if [ $cr != 0 ]
then
...
...
fi

Le problème est que à chaque fois j'ai le code retour 0 même si le ftp à echoué.
Merci
A voir également:

5 réponses

Problablement que tu lance un commande apres ton ftp
dans le premier script ?

sinon fait un echo du $? dans le premier script et recupere le
resultat dans le script principal.
0
Je l'avais fait mais toujours pareil.
Le put.csh contient ceci :
#------------------------------------------------------------------
#! /bin/csh
ftp -n << EOD
open adresse_machine
use user password
ascii
put nom_fic
bye
EOD
exit($status)
#-------------------------------------------------------
/* Le $status est équivalent au $? en ksh */
Donc j'ai l'impression que le code retour $status correspond au bye de ftp (ce qui explique que j'ai toujours 0 peut être).
Je ne vois vraiment pas comment résoure ce problème surtout mon programme doit être lancé en automatique
Merci encore une fois.
0
Vire la derniere commande exit($status)
0
J'ai viré exit($status) mais ça rend toujours 0
Voilà le petit test que j'ai fait : dans un fichier fic2.ksh
#-------------------------------
#fichier fic2.ksh
#!/bin/ksh
./fic1.csh
cr=$?
echo "VOILA CR= $cr"
exit 0
#---------------------------
#Le fichier fic1.csh contient ce qui suit :
#! /bin/csh
ftp -n << EOD
open adresse_machine
use user password
ascii
put nom_fic
bye
EOD
#---------------------------------------------------
Je lance alors ./fic2.ksh et j'ai ce résultat :
VOILA CR=0
/* Sachant que le ftp a été raté */
0
J'ai le même souci, t'as pu trouver ?
Merci.
0
bsaad > admo
24 avril 2002 à 17:40
Bonjour admo,
Malheureusement on ne peut pas faire un simple test du code retour d ftp.
J'étais obligé de résoudre le problème autrement :
Si je veux faire un get : j'écrit un shell qui fait

ftp -n << EOD > ${fic.trc} 2>&1
open ${ADR}
use ${USR} ${PWD}
cd ${REP}
${TYP}
get ${FIC}
bye
EOD

et puis je teste si le fichier de trace contient qqc :
if [ -s ${fic.trc} ] alors le ftp n'a pas marché

Alors que pour vérifier si un fichier existe sur le serveur distant avant de faire un put, je fais d'abord un ftp qui fait un simple 'ls' nom_fic redirigé dans une trace et puis j'analyse ma trace .
J'espère avoir été clair.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
essaie de passer une url ( voir eemple plus bas ),
dans tous les cas
j'ai bien l'impression que c'est la commande ftp qui renvoie
un status de 0 a partir du moment ou tu est bien connecté
meme si le transfert a pu ou non se faire.

normalement avec ca, ca marche.

#!/bin/csh
ftp ftp://login:password@localhost << EOF
ascii
put nom_fic
bye
EOF
0