web-dev-qa-db-fra.com

Mon script batch FTP est bloqué sur "Commande 200 PORT réussie" et ne télécharge pas les fichiers sur le serveur.

J'ai essayé tout ce que j'ai trouvé dans les résultats de Google sur

Commande 200 PORT réussie

mais rien n'a aidé.

Quelqu'un peut-il aider à résoudre ce problème s'il vous plaît?

Le code de "runScript.bat:

ftp -s:"C:\automation\fileup.bat" myserver.com

Le code de "fileup.bat:

username
password
ascii
cd "/public_html/reports/"
lcd "C:\automation\tests\HtmlReporter"
Prompt
mput *
disconnect
close
bye

Le journal de la console:

C:\automation>ftp -s:"C:\automation\fileup.bat" myserver.com
Connected to myserver.com.
220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 7 of 500 allowed.
220-Local time is now 04:40. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 3 minutes of inactivity.
User (server26.000webhost.com:(none)):
331 User username OK. Password required

230-OK. Current restricted directory is /
230-449 files used (4%) - authorized: 10000 files
230 16742 Kbytes used (1%) - authorized: 1536000 Kb
ftp> ascii
200 TYPE is now ASCII
ftp> cd "/public_html/reports/"
250 OK. Current directory is /public_html/reports
ftp> lcd "C:\automation\tests\HtmlReporter"
Local directory now C:\automation\tests\HtmlReporter.
ftp> Prompt
Interactive mode Off .
ftp> mput *
200 PORT command successful

L'erreur concernant WinSCP (pour Martin) ":

C:\Users\idan>cd c:\automation\

c:\automation>runFTP.bat

c:\automation>winscp.com /command     "open ftp://user:[email protected]/"     "cd /public_html/reports/"     "lcd C:\automation\tests\HtmlRepo
rter"     "put *"     "exit"
'winscp.com' is not recognized as an internal or external command,
operable program or batch file.

c:\automation>
7
Idan E

Cela ressemble à un problème typique du mode actif FTP. Le serveur ne peut pas se reconnecter à votre machine pour établir une connexion de transfert de données.

Cela se produit généralement car, de nos jours, la plupart des ordinateurs clients sont protégés par un pare-feu ou NAT ou les deux, ce qui empêche le fonctionnement du mode FTP actif. Pour que le mode actif fonctionne, vous devez ouvrir votre pare-feu (non recommandé) et/ou configurer NAT règles de routage.

Voir mon article sur Modes FTP et configuration du réseau pour le mode actif .


Ou vous utilisez le mode FTP passif. Le client Windows ftp.exe ne prend cependant pas en charge le mode passif, ce qui le rend plutôt inutile de nos jours.

Vous devez donc utiliser un autre client FTP en ligne de commande. Une majorité de clients FTP supporte le mode passif.

Par exemple avec WinSCP votre runScript.bat serait comme:

winscp.com /command ^
    "open ftp://username:[email protected]/" ^
    "cd /public_html/reports/" ^
    "lcd C:\automation\tests\HtmlReporter" ^
    "put *" ^
    "exit"

Notez que WinSCP utilise par défaut le mode passif.

Pour plus de détails, consultez les guides WinSCP pour:

(je suis l'auteur de WinSCP)

11
Martin Prikryl

J'ai eu exactement le même problème ("200 commande PORT réussie" bloqué à l'écran pour toujours), et j'ai été en mesure de le résoudre.

Tout d’abord, de nombreux articles sur Internet disent que Windows ftp.exe ne prend pas en charge le mode passif. Ce n'est pas vrai:

ftp> quote pasv

227 Entrer en mode passif

Dans mon cas, j'avais un serveur Windows 2012 R2 avec une adresse IP réelle. Le passage en mode passif n'a pas résolu le problème, j'étais toujours bloqué sur "200 commande PORT réussie". Dans le même temps, WinSCP a bien fonctionné. La solution consistait à créer une règle de pare-feu entrante autorisant les connexions externes du serveur FTP au fichier ftp.exe local.

1
Sergei Tche