[FTP] Commande PORT

Commande PORT [FTP] - Windows & Software

Marsh Posté le 09-09-2005 à 10:09:12    

Alors, j'ai fait un petit script pour ma boite qui va se connecter sur différents serveur ftp (jusque la tout va bien), puis qui se place dans un répertoire, et qui ramene un fichier.
 
Ce matin je lance le script comme tout les matins, impossible de télécharger le moindre fichier.  :fou:  
Et de même sur tous les serveur ftp  :sweat:  
 
Pour voir d'ou ca vient je me connect manuellement avec FileZilla, j'essaye de télécharger un fichier avec du Drag&Drop et stupeur, ca fonctionne...
 
Pour aller plus loin, je décide de tapper à la main dans FileZilla les commandes nécessaires pour télécharger le même fichier, et la c'est le drame :  
 
http://img377.imageshack.us/img377/4642/bugftp5xp.gif
 
 
 :heink:  
 
Si quelqu'un a déjà eu le problème ou a une petite idée  :hello:


Message édité par Benzo29 le 09-09-2005 à 10:23:47
Reply

Marsh Posté le 09-09-2005 à 10:09:12   

Reply

Marsh Posté le 09-09-2005 à 10:25:07    

A priori le problème viendrait de la commande PORT, si quelqun peut m'expliquer comment fonctionne cette commande ?
 
Je sais que pour PORT 10,0,0,1,12,239
10,0,0,1 correspond à l'adresse IP, mais le 12 et le 239  :??:


Message édité par Benzo29 le 09-09-2005 à 10:25:18
Reply

Marsh Posté le 09-09-2005 à 10:29:36    

C'est le port utilisé pour la connexion, sur 2 octets.


---------------
Ratures - Cuisine
Reply

Marsh Posté le 09-09-2005 à 10:35:56    

Ton script est en quel langage ?
 
Sinon tu fais un téléchargement en actif, pourquoi pas en passif ?
 
Le principe de la commande PORT est assez simple :
A,B,C,D,X,Y
Tu envois ton IP (A,B,C,D), et deux nombres qui permettent de calculer le port sur lequel le serveur vient se connecter. Pour le calculer, on fait X*256 + Y (3311 dans ton cas).
 
Par contre c'est bizarre que ça marche avec filezilla et pas avec ton script. Tu peux le donner ?

Reply

Marsh Posté le 09-09-2005 à 10:42:44    

mmmh, ca marche qu'a moitié avec FileZilla, si, à la main en entrant les commandes, (les même que FileZilla utilise à priori) j'essai de télécharger un fichier ca ne marche pas (voir screenshot).
Pour mon script, c'est du Python, mais bon, il est composé d'une 10aine de classes différentes, un truc pas forcement facile à comprendre... Je te met un bout de code simplifié au cas ou tu connaisse la librairie ftplib de python...

Code :
  1. for file in files:
  2. fullname = os.path.join(localdir, file)
  3. # If file already exist, delete it
  4. if Fs.isFile(fullname):
  5.  Fs.deletePath(fullname)
  6. # Download file
  7.  self.ftp.retrbinary('RETR ' + file, open(fullname, 'ab'))


 
 
 
Je vais voir si le fait de passer en passif change quelquechose  :jap:


Message édité par Benzo29 le 09-09-2005 à 10:47:06
Reply

Marsh Posté le 09-09-2005 à 10:51:23    

Passif ou Actif, même combat :(

Reply

Marsh Posté le 09-09-2005 à 10:55:07    

En effet je ne connais pas Python, mais bon ça revient au même.
Par contre tu fais un self.ftp.retrbinary, j'imagine qu'avant cela il y a forcement une initialisation de ton objet self.ftp non ?
 
De plus, il faudrait plus de détail sur la machine qui héberge le script, sur le serveur FTP, sur ce qui les sépare (équipements réseaux...). Tu as une heure pour rendre ta copie :D

Reply

Marsh Posté le 09-09-2005 à 11:14:53    

Mouarf :)  
oui, j'initialise l'objet avant, (dans une autre classe :o) mais je pense franchement pas que ca vienne du code, ca fait 6 mois que je l'utilise et c'est seulement maintenant que ça plante...
 
la machine qui héberge le script : un pc sous windows (celui avec lequel je post ici :))
 
le serveur FTP voilà le mieux que je puisse te donner c'est le trace de FileZilla après une connexion :

Code :
  1. Etat : Connexion à 10.***.***.*** ...
  2. Etat : Connecté à 10.***.***.***. Attente du message d'accueil...
  3. Réponse : 220 DeltaNet ftp server (c) 1995 Chris Poole. 1.58 (04-Mar-97). S/N 193.
  4. Commande : USER ***
  5. Réponse : 331 Password required for ***.
  6. Commande : PASS ***
  7. Réponse : 230 User *** logged in.
  8. Commande : FEAT
  9. Réponse : 502 Command not known FEAT.
  10. Etat : Connecté
  11. Etat : Récupération de la liste de répertoires...
  12. Commande : PWD
  13. Réponse : 257 "/" is current directory
  14. Commande : PORT 10,0,0,1,5,165
  15. Réponse : 200 PORT command successful.
  16. Commande : TYPE A
  17. Réponse : 200 ASCII type selected.
  18. Commande : LIST
  19. Réponse : 150 LIST OK, opening ASCII mode data connection.
  20. Réponse : 226 Transfer complete.
  21. Etat : Succès du listage du répertoire


 
ce qui les sépare : je me connecte avec une liaison RTC et un vieux modem 33k (d'ou la complexité du code), et je suis donc en liaison direct avec le serveur Ftp...


Message édité par Benzo29 le 09-09-2005 à 11:15:54
Reply

Marsh Posté le 09-09-2005 à 11:28:15    

Vraiment bizarre... Tu as testé en faisant un ftp avec la commande DOS voir ce que ça donnait ?

Reply

Marsh Posté le 09-09-2005 à 12:19:45    

Merci petoulachi pour ton aide mais le problème venez de ma boite...
Le chemin de destination des fichiers (qui est sur le serveur interne) a changé, sans que personne ne soit averti, et surtout pas mon script...
Après l'erreur que me retournait mon script : "Permission denied" était pas très explicite  [:tinostar] Et on avait tous penché pour un problème coté serveur ftp.
 
Bref, pb résolu... encore merci :)
 
ps : Ca reste étrange pour le screenshot d'en haut quand même  :o


Message édité par Benzo29 le 09-09-2005 à 12:20:01
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed