Problème récupération fichier FTP erreur 503 use Auth first

xda_7822 Messages postés 7 Statut Membre -  
brupala Messages postés 111157 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

J'ai créé un .bat fort simple pour uploder chaque jour un fichier de puis un serveur distant que j'accède via FTP.

Si j'utilise Filezilla je peux me connecter mais mon batch me retourne l'erreur "503 use Auth first" et je n'arrive pas à contourner ce problème.

L'erreur se produit aprés l'instruction "echo user USER_TOTO MDP_TOTO"

Si quelqu'un peut me sauver !!!!!

Ci-dessous mon batch

echo off

set path=C:\toto

(

    echo open int-clt.toto.fr 21000

    echo user USER_TOTO MDP_TOTO

    echo prompt

    echo binary

    echo get /SOC-TIERS.CSV

    echo disconnect

    echo bye

) >> %path%\log.ftp

cd C:\WINDOWS\system32

ftp -s:C:\toto\log.ftp -n

pause >nul

5 réponses

  1. contrariness Messages postés 17905 Date d'inscription   Statut Membre Dernière intervention   6 243
     

    Je ne suis pas un specialiste des batch, mais l'erreur indique que vous tentez une action avant de vous etre authentifié...
    Y'aurait pas 2 lignes a inverser dans votre batch ?

    0
    1. brucine Messages postés 24980 Date d'inscription   Statut Membre Dernière intervention   4 181
       

      Bonjour,

      Non puisque la commande ftp lit le fichier de paramétrage log.ftp avant d'être exécutée et que l'authentification y survient juste après la connexion.

      Ce fichier de paramétrage n'est pas forcément au format .ftp (.txt suffit) et on ne voit pas l'intérêt de le recréer à la volée à chaque exécution.

      Si on ne veut pas la rémanence des identifiants, il faudra supprimer le Batch, retour à la case départ, ou intégrer dans le Batch la suppression du fichier .txt sur le disque après emploi.

      Pour revenir à nos moutons, il me semble que si on veut que identifiant et mot de passe soient sur la même ligne, on doit comme les autres utiliser le commutateur -n avant le nom du fichier:

      ftp -n -s:C:\toto\log.ftp

      Mais puisque l'on écrit pas au kilomètre et qu'on passe par un fichier de paramétrage, rien n'interdit non plus, cette fois-ci sans le commutateur -n, au lieu de:

      echo user username password

      deux lignes successives:

      echo username
      echo password


      La commande de PATH est par ailleurs discutable (il me suffit de qualifier le chemin de copie du script), et celle qui suit ne sert à rien puisque C:\Windows\System32 fait partie du PATH par défaut et que ftp.exe s'y trouve.

      0
      1. xda_7822 Messages postés 7 Statut Membre > brucine Messages postés 24980 Date d'inscription   Statut Membre Dernière intervention  
         

        Bonjour brucine merci de vous intéresser à mon problème. Pour ce qui est de la suppression du log.ftp je suis d'accord le but premier étant de télécharger un fichier la finalité de script c'est pour plus tard.

        J'ai aussi tester avec un batch contenant la ligne

        ftp -s:toto.ftp et aussi ftp -s:toto.ftp -n

        puis le script :

        open int-clt.toto.fr 21000
        AUTH TLS
        user ID_TOTO MDP_TOTO
        prompt
        get /SOC-TIERS.CSV
        quit

        Mais j'ai la même erreur.

        Je note aussi aussi tu parle de faire 2 lignes d'identification

        echo username
        echo password

        J'avais déjà cherché de ce coté mais la ligne

        echo password MDP_TOTO me retourne une erreur "commande non valide". 

        0
      2. brucine Messages postés 24980 Date d'inscription   Statut Membre Dernière intervention   4 181 > xda_7822 Messages postés 7 Statut Membre
         

        Je n'ai pas d'erreur dans le fichier de Log après avoir recopié servilement ton script sauf évidemment le dossier personnalisé et la commande ftp elle-même, bien qu'à un echo global, mais chacun le sien, je préfère rediriger chaque ligne:

        echo open int-clt.toto.fr 21000>>log.txt

        echo user USER_TOTO MDP_TOTO>>log.txt

        Il n'y a pas de raison que la commande echo ne soit pas valide, elle recopie ce qu'on lui demande au kilomètre sauf caractère spécial non échappé.

        Mais qui n'est pas echo password MDP_TOTO>>log.txt mais
        echo MDP_TOTO>>log.txt: la séquence ftp sait que, dans l'ordre, c'est l'identifiant et le mot de passe qu'elle attend.

        0
  2. xda_7822 Messages postés 7 Statut Membre
     

    merci pour votre aide mais non ce n'est pas cela j'ai déjà essayé

    0
  3. contrariness Messages postés 17905 Date d'inscription   Statut Membre Dernière intervention   6 243
     

    Et Filezilla, n'as pas un log d'erreur ?

    0
    1. xda_7822 Messages postés 7 Statut Membre
       

      Non lorsque je me connecte avec Filezilla tout se passe bien. Sauf que bien enttedu mon but n'est pas d'utiliser filezilla mais de faire un .bat pour le mettre dans une tâche planifiée par la suite et automatiser la récupération du fichier en question

      0
    2. brucine Messages postés 24980 Date d'inscription   Statut Membre Dernière intervention   4 181
       

      Bonjour,

      Il me semble de mémoire (un moment que je ne touche plus à ça) que FileZilla ne sait pas "scripter" sauf la commande fzcli de FileZilla Pro, qui est payant.

      Ce qui rendrait compte de l'erreur observée via FileZilla (mais pas de celle via la commande ftp qui elle utilise le client ftp Windows par défaut).

      0
  4. brupala Messages postés 111157 Date d'inscription   Statut Membre Dernière intervention   14 453
     

    Salut,

    ça n'existe pas la commande ftp

    user toto mdp

    c'est user toto c'est tout et il faut attendre le prompt pour le mot de passe

    par exemple par une pause, puis le mot de passe .

    je ne pense pas qu'on puisse faire du ftp avec un tel batch, il faut attendre le prompt et répondre ensuite.

    Je faisais des choses comme ça autrefois mais avec des scripts Teraterm qui sont beaucoup plus puissants.

    En plus de ça, on ne met JAMAIS un mot de passe en clair dans un script.


    0
    1. brucine Messages postés 24980 Date d'inscription   Statut Membre Dernière intervention   4 181
       

      Bonjour,

      Bien sûr que si, la réunion sur une seule ligne est utilisée après le commutateur
      ftp -n qui réinitialise le mot de passe, voir par exemple ici en 19.
      https://stackoverflow.com/questions/16158138/how-to-ftp-with-a-batch-file

      Je n'aime pas la syntaxe et je préfère utiliser deux entrées distinctes, mais ce n'est pas pour ça qu'elle n'existe pas.

      Si on met le mot de passe à la volée et qu'il y a d'autres utilisateurs potentiels du PC, on doit bien sûr soit détruire le script lui-même après utilisation, soit détruire le fichier de paramètres, voir par exemple là mais c'est une autre question:
      https://www.robvanderwoude.com/ftp.php

      0
    2. brupala Messages postés 111157 Date d'inscription   Statut Membre Dernière intervention   14 453 > brucine Messages postés 24980 Date d'inscription   Statut Membre Dernière intervention  
       

      D'un autre côté, il y a plus simple:

      les commandes curl ou wget .

      Curl est inclus à windows : https://www.ionos.fr/digitalguide/serveur/outils/debuter-dans-curl-sous-windows/ et wget s'y installe facilement.

      Les deux prennent le format url:

      rajouter le dossier de sortie par -o dans curl et -O dans wget et ça doit rouler mieux que ftp.

      curl permet l'upload aussi.

      0
    3. xda_7822 Messages postés 7 Statut Membre > brupala Messages postés 111157 Date d'inscription   Statut Membre Dernière intervention  
       

      Merci brupala,

      J'ai testé curl (que je ne connaissait pas) cela smeble facile mais finalement j'arrive au même résultat : erreur curl: (67) Access denied: 503

      0
    4. brupala Messages postés 111157 Date d'inscription   Statut Membre Dernière intervention   14 453 > xda_7822 Messages postés 7 Statut Membre
       

      ah tu mets quoi comme ligne de commande ?

      0
    5. xda_7822 Messages postés 7 Statut Membre > brupala Messages postés 111157 Date d'inscription   Statut Membre Dernière intervention  
       

      curl -k ftp://int-clt.TOTO.fr:21000 --user USERTOTO:MDP_TOTO

       je n'ai même pas mis de ligne pour récupérer le fichier. Je n'en suis qu'à la connexion

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

    Posez votre question
  6. xda_7822 Messages postés 7 Statut Membre
     

    Merci a tous et à toutes pour votre aide.

    Le problème est résolu la commande FTP ne gérait pas le formats TLS (je crois avoir compris que cela venait de la vielle version de windows Serveur d'où etait lancé la commande.

    J'ai finalement installé WinSCP et écrit ce batch tout simple qui fonctionne très bien

    1 le .bat

    del "c:\repertoire_de_destination\*.CSV" /Q

    del "c:\toto\log.txt\*.CSV" /Q

    "c:\program file (x86)\winscp\wincsp.exe\" /log="c:\toto\log.txt" /ini=nul /script="c:\toto\script.txt"

    2 le fichier de commande script.TXT

    open ftpes://nom_user:password@nom_serveur:N°du_port/

    get /*.csv "c:\repertoire_de_destination\*.*"

    exit

    0
    1. brupala Messages postés 111157 Date d'inscription   Statut Membre Dernière intervention   14 453
       

      Oui,

      winscp, je ne savais pas qu'il faisait du ftps, je suis toujours resté sur sftp (SSH), qui est bien plus pratique, mais il faut un serveur unix/linux, hélas windows ne gère pas à ma connaissance, bien qu'on ait un client ssh maintenant, pourquoi pas un serveur.

      le client windows server, OK, il tourne sur quoi ton serveur ?

      0