IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Transfert de fichier impossible avec ftplib


Sujet :

Réseau/Web Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut Transfert de fichier impossible avec ftplib
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    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
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    quelques précisions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    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.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 34
    Points : 13
    Points
    13
    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

Discussions similaires

  1. Copie de plusieurs fichiers impossible avec XCOPY ou COPY
    Par Invité dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 23/08/2013, 11h52
  2. Suppression de fichier impossible avec unlink
    Par sachaaaz dans le forum Langage
    Réponses: 2
    Dernier message: 17/12/2012, 10h50
  3. Amsn, transfert de fichier impossible?
    Par tonelli dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 05/11/2006, 02h51
  4. Réponses: 1
    Dernier message: 09/08/2006, 13h25
  5. Transfert de fichier avec TServeurSocket et TClientSocket
    Par Cyrilh7 dans le forum C++Builder
    Réponses: 7
    Dernier message: 24/09/2005, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo