Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Invité régulier
    Inscrit en
    juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : juillet 2010
    Messages : 34
    Points : 5
    Points
    5

    Par défaut Transfert de fichier impossible avec ftplib

    Bonjour,

    j'arrive à me connecter à un serveur FTP, mais aucune commande FTP ne fonctionne.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/env python
    # -* coding: utf-8 -*-
    from ftplib import FTP
     
    ftp = FTP('ftpperso.free.fr')   
    ftp.login('mes.pages.free','monPasswd')                
    f = open('test.php','wb')
    ftp.retrbinary('RETR index.php', f.write)
    ftp.quit()
    le code ci-dessus fonctionne parfaitement sur mes pages persos.
    En changeant l'adresse du host, le login/passwd et le nom du fichier, il devrait fonctionner sur n'importe quel serveur.

    Ben non, j'ai un serveur ftp local qui ne veut rien savoir.
    J'arrive à me connecter, mais aucune commande ne fonctionne (ls, list, dir, ...).

    Le transfert par ftp en ligne de commande fonctionne.
    Depuis un programme php, pas de problème non plus.

    Le transfert ne fonctionne pas uniquement depuis un programme python.

    Merci de votre aide

  2. #2
    Expert Confirmé Sénior
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    2 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 2 302
    Points : 4 150
    Points
    4 150

    Par défaut

    Bonjour,

    2 petites idées:

    1- fermer le fichier disque (ou utiliser with). Cela vide le cache disque et fait apparaitre quelquefois des choses qu'on ne voyait pas avant.

    2- essayer de changer les modes actif/passif

    Sinon, j'ai des choses très similaires aux tiennes: http://python.jpvweb.com/mesrecettes...ts_simples_ftp
    Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Invité régulier
    Inscrit en
    juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : juillet 2010
    Messages : 34
    Points : 5
    Points
    5

    Par défaut

    Bonjour,

    J'ai testé en mode passif, ce n'est pas mieux.

    Code :
    1
    2
    3
    4
    5
    6
    7
    Ftplib
    # Some servers apparently send a 200 reply to
    # a LIST or STOR command, before the 150 reply
    # (and way before the 226 reply). This seems to
    # be in violation of the protocol (which only allows
    # 1xx or error messages for LIST), so we just discard
    # this response.
    c'est le cas de mon serveur FTP
    Comment faire un transfert dans ce cas ?

  4. #4
    Invité régulier
    Inscrit en
    juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : juillet 2010
    Messages : 34
    Points : 5
    Points
    5

    Par défaut

    quelques précisions:
    Code :
    1
    2
    3
    4
    5
    6
    7
    Ftplib, ligne 325:
           if self.passiveserver:
                host, port = self.makepasv()
                conn = socket.create_connection((host, port), self.timeout) 
                if rest is not None:
                    self.sendcmd("REST %s" % rest)
                resp = self.sendcmd(cmd)
    socket.create_connection((host, port), self.timeout) ne réponds pas (timeout).
    le host est le bon, le port=3000.

  5. #5
    Expert Confirmé Sénior
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    2 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 2 302
    Points : 4 150
    Points
    4 150

    Par défaut

    Bonjour,

    Je ne vois vraiment pas ce que je peux faire pour t'aider: je n'ai jamais eu ce problème, et je ne peux pas essayer sans l'accès au serveur.

    Ce que je sais c'est: le module ftplib "encapsule" une partie du protocole ftp dans des fonctions pratiques à utiliser, mais pour répondre à un protocole non standard, il faut revenir au protocole de base ftp et tenter d'y répondre avec les fonctions de bas niveau de ftplib. Rien d'impossible, mais il faudra avancer à coup d'essais/erreurs.

    Autre solution: si un script fonctionne en console, ton programme Python peut peut-être lui donner la main.
    Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos...
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Invité régulier
    Inscrit en
    juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : juillet 2010
    Messages : 34
    Points : 5
    Points
    5

    Par défaut

    C'est déjà fait en php, mais je voulais migrer l'ensemble de la chaine de traitement vers python 2.7.

    C'est un peu dommage de garder une partie de la chaine en php.

    Merci pour ton aide

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •