«

»

Lug 17

Windows : trasferimento FTP automatico con script

ftp_scriptIn Windows è presente da sempre un client FTP utilizzabile dalla riga di comando, è quindi possibile usarlo per collegarsi ad un server FTP per inviare o ricevere files da un server FTP usando questo diffuso protocollo di trasferimento dati.

Il comando è interattivo, nel senso che una volta lanciato dal prompt dei comandi presenta a video una console in cui impartire i comandi e visualizza le risposte del server FTP a cui siamo collegati, è però possibile anche rendere automatico un trasferimento FTP usando un semplice script.

 

La prima cosa da fare è creare il file script in formato testo usando il Blocco Note o qualsiasi altro editor di testo che possa salvare il file in formato testuale Ascii senza formattazione.

Lo script dovrà contenere esattamente gli stessi comandi che avremmo impartito nella nostra sessione FTP con il server con cui dobbiamo scambiare dati, quindi tanto per capirci sarà qualcosa di simile a questo :

open server_ftp
username
password
binary
get /path/filename.ext
quit

La prima riga (open server_ftp) apre la connessione con il nostro server FTP, possiamo mettere sia il nome del server che il suo indirizzo IP.

Nella seconda e terza riga (username, password) specifichiamo il nome utente e la relativa password da usare come login per il collegamento con il server FTP.

La quarta riga (binary) forza un trasferimento binario, in modo che possiamo scaricare dal server FTP qualsiasi tipo di file avendo la certezza che non venga troncato (cosa possibile usando la modalità Ascii che è da utilizzare SOLO per il trasferimento di files di testo).

La quinta riga (get /path/filename.ext) istruisce il nostro client FTP perchè legga dal server FTP il file che si trova nel percorso /path e che si chiama filename.ext e lo trasferisca sul pc locale.

La sesta riga infine (quit) chiude la connessione col server FTP.

Una volta salvato questo script in un file di testo, ad esempio in SCRIPT.TXT lo potremo richiamare da riga di comando con la seguente sintassi :

C:\WINDOWS\SYSTEM32\FTP.EXE  -s:SCRIPT.TXT

In questo modo avremo un trasferimento automatico senza dover interagire in alcun modo con il client FTP di Windows.

Volendo è possibile inserire l’istruzione qui sopra in un file batch (.BAT) da lanciare alla bisogna da riga di comando o da un collegamento sul desktop o addirittura schedularlo a tempo, insomma con un semplice script possiamo automatizzare il trasferimento FTP verso il nostro server nel modo più semplice e veloce.

 

Maggiori informazioni sul client FTP di Microsoft e sui comandi supportati (sono nella colonna di sinistra) sono disponibili a questo link :

https://technet.microsoft.com/en-us/library/ff687787.aspx

 

4 comments

Vai al modulo dei commenti

  1. Diego Sala

    ciao, provo a spiegarti ciò che mi servirebbe:
    ho creato un file di excel, per tenere sott’occhio le operazioni di trading.
    Il software che utilizzo per il trading, genera un report, in formato html.
    il file di excel estrapola i dati da questo REPORT, e fa i suoi calcoli.
    Io vorrei, che questo REPORT, venisse salvato, in uno spazio web (quando lo creo, mi viene salvato ad esempio nella cartella Downloads, nel mio pc, e da qui in automatico vorrei che venisse spostato nello spazio web(non intendo cloud, ma nel server di un sito creato su altervista.)).
    in parole povere la mia domanda è:
    si può usare il tuo script, in modo che venga attivato automaticamente , quando viene sovrascritto, un certo file?

    1. mario

      Certamente , puoi fare un file batch (.BAT) simile a questo che dovresti schedulare in esecuzione a tempo ogni tot minuti / secondi, oppure mettere in loop continuo con un GOTO :

      rem :INIZIO rem togliere il rem iniziale per avere un loop continuo
      C:
      CD \DOWNLOADS\
      DEL REPORT.OLD
      IF NOT EXIST REPORT.HTML GOTO FINE
      c:\windows\system32\ftp.exe -s:script.txt rem script.txt deve trovarsi in c:\downloads ed avere i comandi per il tuo ftp, cioè il trasferimento di report.html sul tuo spazio web
      REN REPORT.HTML REPORT.OLD
      :FINE
      TIMEOUT 30
      rem GOTO INIZIO rem togliere il rem iniziale per avere un loop continuo

      O simile, vedi tu come personalizzarlo…..

      1. Diego Sala

        grazie per la risposta.
        ma quindi , non si può creare un bat, che verifichi la modifica, o la sovrascrittura, del file report.html?
        se ho capito bene quello che hai scritto(non mastico molto la o ha un altro significato? programmazione), il DEL sta per delete=cancella
        cancella report.old , fa partire il bat che trasferisce il file, e rinomina il nuovo report.html in report.old
        e si ripete ogni 30 secondi(?)
        quello che hai scritto sotto al IF sarebbe il file che hai creato per l articolo giusto?

        1. mario

          Il batch di esempio controlla la presenza del file report.html, se esiste procede con l’ftp sullo spazio web e quindi rinomina il file in report.old in modo che al prossimo giro di controllo non rifaccia l’ftp se non e’ presente un nuovo file report.html in quel percorso, in pratica invece di controllare la sovrascrittura del file controlla la presenza del file, se ti serve una copia del report.html anche in locale puoi cambiare l’istruzione
          REN REPORT.HTML REPORT.OLD
          in
          MOVE REPORT.HTML C:\ALTRADIR\
          in questo modo dopo aver trasferito il file via ftp lo “sposta” invece di rinominarlo in modo che il giro successivo non lo trovi, se no continua a fare dei trasferimenti senza senso.
          Confermo : DEL cancella, e si si ripete ogni 30 secondi, è la variabile TIMEOUT
          Ti conviene fare delle prove, non credo che farai danni….

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

code