Come scaricare file dal sito FTP in una riga di comando senza interazione dell'utente (Windows)


13

So che esiste un comando FTP che può essere eseguito dalla riga di comando su Windows e scarica un file da un sito FTP. Utente + password sono specificati in "quel" cmd a una riga. Queste opzioni + password passtrough dovrebbero essere su quella riga di comando.

echo open 192.168.1.64 21> ftp.txt
echo anonymous>> ftp.txt
echo ftp@ftp.com>> ftp.txt
echo bin >> ftp.txt
echo get test.txt >> ftp.txt
echo bye >> ftp.txt

ftp -s:ftp.txt

Devi scaricare via FTP o devi semplicemente scaricare quei file con qualsiasi programma? (Rsync può leggere da un file con nomi da sincronizzare e dalla riga di comando. Scp può farlo anche dalla riga di comando. Entrambi non sono antichi come il testo semplice, no_true_security FTP).
Hennes,

Risposte:


13

Prova questo: File batch - Download FTP non presidiati

WGET ftp://ftp.mydomain.com/path/file.ext  

per download anonimi

o:

WGET ftp://user:password@ftp.mydomain.com/path/file.ext  

quando è richiesta l'autenticazione.


Come ha sottolineato @XavierStuvw tramite modifiche e commenti, lo scambio WGETin minuscolo wgetfunzionerebbe in linux.

wget ftp://user:password@ftp.mydomain.com/path/file.ext

non vedo alcun comando che abbia l'opzione di cambio utente e password in UNA riga lì.
soundhax,

-secondo interruzione era come ricordo
soundhax

2
Benvenuto in Super User! Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Canadian Luke,

1
@CalvT Nessuna obiezione. Il vantaggio previsto del commento è che gli utenti Linux possono atterrare su questa pagina dopo una ricerca su Internet e supervisionare il sistema a cui si applica. Mi è successo, in effetti.
XavierStuvw

1
@CalvT Il titolo è davvero preciso, ma i motori di ricerca spesso visualizzano l'intero frame di risposta ed è facile immergersi in questo. Ovviamente ciò non dovrebbe impedire al lettore di essere consapevole, ma in questo caso è stato un caso che le istruzioni Linux e Windows siano sostanzialmente le stesse. Ben fatto, grazie.
XavierStuvw

8

Ho trovato il modo:

echo open 192.168.0.1 >> ftp &echo user admin w00t >> ftp &echo binary >> ftp &echo get file.zip >> ftp &echo bye >> ftp &ftp -n -v -s:ftp &del ftp

Questo non ha funzionato quando l'ho provato (ho finito per usare invece il client della riga di comando di WinSCP ). Su quale versione di Windows è stato testato?
Peter Mortensen,

Potresti spiegare come funziona questa linea? Impossibile trovare documentazione. Sto cercando di farlo funzionare con psftp
stallingOne

@stallingOne Pensa a &come un interruttore di linea ... in realtà si tratta di più comandi. Fondamentalmente crea uno script, riga per riga, usando echoe poi dice ftpdi eseguirlo. Sta anche nominando il file di script ftp, il che lo rende confuso.
Havenard,

Scarsa scelta del nome del file. "ftp" è sia il nome del file dello script che sta costruendo sia il nome dell'exe. Quindi la risoluzione del percorso su ftp -n -v -s:ftpè un po 'complicata. (Ogni utilizzo di "ftp" si riferisce a cose diverse)
Chad Schouggins,

2

Nota che puoi chiedere la sintassi di un comando in DOS usando /? interruttore. Per esempio:

C: \> ftp /?

Trasferisce file da e verso un computer che esegue un servizio server FTP
(a volte chiamato demone). Ftp può essere utilizzato in modo interattivo.

FTP [-v] [-d] [-i] [-n] [-g] [-s: nomefile] [-a] [-A] [-x: sendbuffer] [-r: recvbuf
fer] [-b: asyncbuffers] [-w: windowsize] [host]

  -v Elimina la visualizzazione delle risposte del server remoto.
  -n Elimina l'accesso automatico alla connessione iniziale.
  -i Disattiva i prompt interattivi durante più file
                  trasferimenti.
  -d Abilita il debug.
  -g Disabilita il globbing del nome file (vedere il comando GLOB).
  -s: nome file Specifica un file di testo contenente comandi FTP; il
                  i comandi verranno eseguiti automaticamente dopo l'avvio di FTP.
  -a Utilizzare qualsiasi interfaccia locale quando si collega la connessione dati.
  -Un accesso come anonimo.
  -x: send sockbuf Sostituisce la dimensione SO_SNDBUF predefinita di 8192.
  -r: recv sockbuf Sostituisce la dimensione SO_RCVBUF predefinita di 8192.
  -b: conteggio asincrono Sostituisce il conteggio asincrono predefinito di 3
  -w: windowsize Sostituisce la dimensione del buffer di trasferimento predefinita di 65535.
  host Specifica il nome host o l'indirizzo IP del telecomando
                  host a cui connettersi.

Appunti:
  - I comandi mget e mput prendono y / n / q per yes / no / quit.
  - Usa Control-C per interrompere i comandi.

Nel tuo caso, ti consigliamo di utilizzare l'opzione -s per dargli uno script, comprese le risposte di accesso.

Per esempio:

  1. Creare un file di script (c: \ scriptfile.txt) con il seguente contenuto:

    open
    servername_or_ip
    username
    password
    get
    /fullpath/thefile.txt
    c:\fullpath\thefile.txt
    quit
    
  2. eseguire ftp con l'opzione -s e specificare il nome file dello script

    C:\>ftp -s:c:\scriptfile.txt
    

Su Windows XP (sì, sì, lo so), questo si traduce in "Host sconosciuto / ?."
Peter Mortensen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.