CODE RETOUR FTP (URGENT SVP)

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

  • Votes
  • Date
  • Date décroissante
  1. 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.
    1. 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.
      1. 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é */
        1. J'ai le même souci, t'as pu trouver ?
          Merci.
        2. @admoBonjour 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.
      2. 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