CODE RETOUR FTP (URGENT SVP)

bsad -  
 bsaad -
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

5 réponses

  1. Momch
     
    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
  2. bsad
     
    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
  3. Momch
     
    Vire la derniere commande exit($status)
    0
  4. bsad
     
    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
    1. admo
       
      J'ai le même souci, t'as pu trouver ?
      Merci.
      0
      1. bsaad > admo
         
        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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Momch
     
    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