2010-08-25 13 views
3

Spécifiquement pour Twisted, j'aimerais pouvoir déterminer si le serveur auquel je suis connecté prend en charge le mode actif ou passif. Voir API.FTP Détecter si les modes actif ou passif sont activés

Si quelqu'un pouvait expliquer ou donner un exemple dans le protocole FTP, comment déterminer si le serveur prend en charge les modes actif ou passif.

Répondre

4

Le mode passif est activé en émettant la commande PASV sur le serveur. S'il répond avec un code d'erreur (devrait être 500 Unknown command) lors de l'émission de cette commande, alors vous savez qu'il n'est pas pris en charge. S'il répond par un 227 Entering Passive Mode, alors vous savez que passif est supporté.

l'exemple en utilisant les commandes telnet de ligne de commande et FTP:

% telnet ftp.mozilla.org 21 
Trying 63.245.208.138... 
Connected to dm-ftp01.mozilla.org. 
Escape character is '^]'. 
220- [greeting omitted] 
USER anonymous 
331 Please specify the password. 
PASS [email protected] 
230- [banner omitted] 
230 Login successful. 

Bonne commande (mode passif est pris en charge):

PASV 
227 Entering Passive Mode (63,245,208,138,202,53) 

commande Bad (500 erreur levée):

FART 
500 Unknown command. 
+1

Dans une réponse 'PASV' réussie, seul le code de réponse est standardisé (toujours 227), mais le texte contenant l'IP/Port n'est pas standardisé ré. Il diffère d'un fournisseur de serveur FTP à un autre. Tous les vendeurs ne disent pas "Entrée en mode passif", tous les vendeurs n'incluent pas l'IP/Port entre parenthèses, certains vendeurs placent l'IP/Port au début du texte alors que d'autres vendeurs le placent à la fin du texte, etc. Pour analyser le texte à la recherche de l'adresse IP/port, vous ne pouvez pas faire de supposition sur sa mise en forme. Ceci est discuté dans [RFC 1123 Section 4.1.2.6] (http://tools.ietf.org/html/rfc1123#page-31). –