Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Réseau/Web
Réseau/Web Forum d'entraide sur Python et le réseau/Web
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/10/2012, 17h05   #1
avi3000
Invité de passage
 
Inscription : juillet 2010
Messages : 24
Détails du profil
Informations personnelles :
Âge : 58

Informations forums :
Inscription : juillet 2010
Messages : 24
Points : 1
Points : 1
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
avi3000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2012, 19h18   #2
tyrtamos
Expert Confirmé
 
Avatar de tyrtamos
 
Inscription : décembre 2007
Messages : 1 777
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 777
Points : 3 049
Points : 3 049
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
tyrtamos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2012, 11h55   #3
avi3000
Invité de passage
 
Inscription : juillet 2010
Messages : 24
Détails du profil
Informations personnelles :
Âge : 58

Informations forums :
Inscription : juillet 2010
Messages : 24
Points : 1
Points : 1
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 ?
avi3000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2012, 13h31   #4
avi3000
Invité de passage
 
Inscription : juillet 2010
Messages : 24
Détails du profil
Informations personnelles :
Âge : 58

Informations forums :
Inscription : juillet 2010
Messages : 24
Points : 1
Points : 1
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.
avi3000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2012, 17h51   #5
tyrtamos
Expert Confirmé
 
Avatar de tyrtamos
 
Inscription : décembre 2007
Messages : 1 777
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 1 777
Points : 3 049
Points : 3 049
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
tyrtamos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2012, 18h17   #6
avi3000
Invité de passage
 
Inscription : juillet 2010
Messages : 24
Détails du profil
Informations personnelles :
Âge : 58

Informations forums :
Inscription : juillet 2010
Messages : 24
Points : 1
Points : 1
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
avi3000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h55.


 
 
 
 
Partenaires

Hébergement Web