PDA

Visualizza la versione completa : [BATCH] Inviare più file via ftp


leopoldo.c
25-04-2012, 17:21
Ciao a tutti, sto tentando di creare un piccolo file .bat che invii tutte le immagini con estensione .png ad un ftp hostato su altervista, ho trovato molta documentazione sul forum, e sono riuscito a creare lo script con facilità. Mi si pone però il problema che non riesco ad uploadare tutti i file, ovvero alcuni vengono inviati e poi risultano di 0kb, non riesco proprio a capire dove sbaglio.

Premetto che sono su w7, connnesso a fastweb ed i file da inviare sarebbero circa 500 da 45 kb ciascuno (ho provato anche con meno file ma non va comunque)

ho utilizzato il procedimento di creare uno script.ftp e poi lanciare il comando
ftp -s:%script.ftp%

Lo script.ftp viene creato come:



@set SCRIPT_NAME=C:\Grafici\upload\script.ftp

@echo open newsflowprova.altervista.org> %SCRIPT_NAME%
@echo newsflowprova>> %SCRIPT_NAME%
@echo PASSWORD>> %SCRIPT_NAME%
@echo bin>> %SCRIPT_NAME%

@for %%f in (C:\Grafici\upload\*.png) do @echo put %%f>> %SCRIPT_NAME%


Questo è quello che esce una volta lanciato il .bat:



C:\Grafici>ftp -s:%SCRIPT_NAME%
ftp> open newsflowprova.altervista.org
Connesso a newsflowprova.altervista.org.
220---------- AlterVista FTP ----------
220-Sei l'utente numero di 120 consentiti
220-L'ora locale Þ 17:08. Porta del server: 21.
220-Questo Þ un sistema privato - Nessun login anonimo
220 Sarai disconnesso dopo 5 minuti di inattivitÓ.
Utente (newsflowprova.altervista.org:(none)):
331 Utente newsflowprova OK. Richiesta password

230-La velocitÓ di download via FTP Þ limitata, usa il browser se devi fare il d
ownload di files molto grandi
230-L'utente newsflowprova ha accesso di gruppo: membri
230 OK. La directory limitata corrente Þ /
ftp> bin
200 TYPE Þ ora 8-bit binary
ftp> put C:\Grafici\upload\a.png
200 Comando PORT eseguito con successo
150 Mi sto collegando alla porta 65219
226-File trasferito con successo
226 2.011 secondi (misurati qui)
ftp: 45812 bytes sent in 0,55secondi 82,69Kbyte/sec)
ftp> put C:\Grafici\upload\a4.png
200 Comando PORT eseguito con successo
500 ?
ftp> put C:\Grafici\upload\a9.png
150 Mi sto collegando alla porta 65220
ftp> put C:\Grafici\upload\al.png
500 Comando sconosciuto
226-Errore durante la lettura dalla connessione dati
226 Trasferimento annullato
200 Comando PORT eseguito con successo


da filezilla:
http://newsflowprova.altervista.org/da_eliminare.PNG

Penso che il problema sia legato alla porta che utilizza quando fa l'upload (non parlo della 21 che usa quando si connette, ma ad esempio alla 65220).

Spero qualcuno riesca ad aiutarmi.
Un saluto.

oregon
25-04-2012, 20:59
Prova ad usare un solo comando

mput *.png

al posto della for con tutti i put

leopoldo.c
26-04-2012, 00:05
Grazie della risposta !

Ho provato ma arrivo allo stesso risultato !

oregon
26-04-2012, 00:17
Prova ad inviare prima il comando

PASV

per passare in modalità FTP passive.

leopoldo.c
26-04-2012, 20:26
Grazie mille sei stato gentilissimo, era proprio quello il problema. Il codice completo, se a qualcuno servirà in futuro è:



@REM = Set the name of our temp script =

@set SCRIPT_NAME=C:\path\FTP_SCRIPT.FTP

@REM = Generate our FTP Script
@echo open HOST> %SCRIPT_NAME%
@echo USERNAME>> %SCRIPT_NAME%
@echo PASSWORD>> %SCRIPT_NAME%
@echo bin>> %SCRIPT_NAME%
@echo hash>> %SCRIPT_NAME%
@echo PASV>> %SCRIPT_NAME%

@REM = Loop through each file that matches our wildcard

@for %%f in (C:\path\*.png) do @echo put %%f>> %SCRIPT_NAME%

@echo quit>> %SCRIPT_NAME%

@REM = Now call FTP with our generated script
@ftp -s:%SCRIPT_NAME%

@REM = Delete our temp script file and we are done
@del %SCRIPT_NAME% /q


Un saluto !

oregon
26-04-2012, 20:47
Prego ... il fatto è che anche io uso fastw... e, come saprai, i sistemi che lo usano sono praticamente all'interno di una rete privata, non esposta su Internet. E' quindi problematico "l'ascolto" di un sistema su una porta (in pratica è impossibile usare il sistema come server).

La modalità FTP "attiva" si aspetta che il client sia contattato dal server remoto - come se il client fosse a sua volta un server - e questo non è possibile.
La modalità FTP "passiva" fa lavorare il client solo come "client" e non presenta i problemi che ti ho detto.

Loading