Como baixar arquivos do site FTP em uma linha de comando sem interação do usuário (Windows)

13

Eu sei que existe um comando FTP que pode ser executado na linha de comando no Windows e ele baixa um arquivo de um site FTP. Usuário + senha são especificados no "cmd" de uma linha. Essas opções + passagem de senha devem estar nessa linha de comando.

echo open 192.168.1.64 21> ftp.txt
echo anonymous>> ftp.txt
echo [email protected]>> ftp.txt
echo bin >> ftp.txt
echo get test.txt >> ftp.txt
echo bye >> ftp.txt

ftp -s:ftp.txt
soundhax
fonte
Você precisa fazer o download via FTP ou precisa fazer o download desses arquivos com algum programa? (O Rsync pode ler de um arquivo com nomes para sincronizar e da linha de comando. O Scp também pode fazer isso da linha de comando. Ambos não são tão antigos quanto o FTP sem texto simples, no_true_security).
Hennes 10/01

Respostas:

13

Tente isso: Arquivos em lote - Downloads de FTP sem supervisão

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

para downloads anônimos

ou:

WGET ftp://user:[email protected]/path/file.ext  

quando a autenticação é necessária.


Como o @XavierStuvw apontou através de edições e comentários, a troca WGETpara uma minúscula wgetfuncionaria no linux.

wget ftp://user:[email protected]/path/file.ext
CalvT
fonte
Eu não vejo nenhum comando que tenha opção de troca de usuário e senha em UMA linha lá.
soundhax
opção -s estava em sentença como eu me lembro
soundhax
2
Bem-vindo ao Super Usuário! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Canadense Luke
11
@CalvT Sem objeções. O benefício previsto do comentário é que os usuários do Linux podem acessar esta página após uma pesquisa na Internet e supervisionar o sistema ao qual se aplicam. Isso aconteceu comigo, de fato.
XavierStuvw 8/03
11
@CalvT O título é realmente preciso, mas os mecanismos de pesquisa geralmente visualizam todo o quadro de respostas e é fácil entrar nele. É claro que isso não deve impedir o leitor de ficar atento, mas nesse caso foi coincidência que as instruções do Linux e do Windows sejam basicamente as mesmas. Muito bem, obrigado.
XavierStuvw 8/03
8

Eu encontrei o caminho:

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
soundhax
fonte
Isso não funcionou quando eu tentei (acabei usando o cliente de linha de comando do WinSCP ). Em qual versão do Windows foi testada?
Peter Mortensen
Você poderia explicar como essa linha funciona? Não foi possível encontrar nenhuma documentação. Eu estou tentando fazê-lo funcionar com psftp
stallingOne
@stallingOne Pense nisso &como um disjuntor de linha ... na verdade, são vários comandos. Basicamente, ele cria um script, linha por linha, usando echoe, em seguida, pede ftppara executá-lo. Ele também está nomeando o arquivo de script ftp, o que o torna confuso.
Havenard 28/01
Má escolha do nome do arquivo. "ftp" é o nome do arquivo do script que ele está construindo e o nome do exe. Portanto, a resolução do caminho ftp -n -v -s:ftpé um pouco excêntrica. (Cada uso de "ftp" se refere a coisas diferentes)
Chad Schouggins
2

Observe que você pode solicitar a sintaxe de um comando no DOS usando o /? interruptor. Por exemplo:

C: \> ftp /?

Transfere arquivos de e para um computador executando um serviço de servidor FTP
(às vezes chamado de daemon). O FTP pode ser usado interativamente.

FTP [-v] [-d] [-i] [-n] [-g] [-s: nome do arquivo] [-a] [-A] [-x: sendbuffer] [-r: recvbuf
fer] [-b: assíncronos] [-w: windowsize] [host]

  -v Suprime a exibição de respostas do servidor remoto.
  -n Suprime o login automático na conexão inicial.
  -i Desativa o prompt interativo durante vários arquivos
                  transferências.
  -d Ativa a depuração.
  -g Desativa o globbing do nome do arquivo (consulte o comando GLOB).
  -s: filename Especifica um arquivo de texto contendo comandos de FTP; a
                  Os comandos serão executados automaticamente após o início do FTP.
  -a Use qualquer interface local ao ligar a conexão de dados.
  -Um login como anônimo.
  -x: send sockbuf Substitui o tamanho padrão SO_SNDBUF de 8192.
  -r: recv sockbuf Substitui o tamanho SO_RCVBUF padrão de 8192.
  -b: contagem assíncrona Substitui a contagem assíncrona padrão de 3
  -w: windowsize Substitui o tamanho padrão do buffer de transferência de 65535.
  host Especifica o nome do host ou o endereço IP do controle remoto.
                  host ao qual se conectar.

Notas:
  - Os comandos mget e mput aceitam y / n / q para yes / no / quit.
  - Use Control-C para abortar comandos.

No seu caso, convém usar a opção -s para alimentar um script, incluindo as respostas de login.

Por exemplo:

  1. Crie um arquivo de script (c: \ scriptfile.txt) com o seguinte conteúdo:

    open
    servername_or_ip
    username
    password
    get
    /fullpath/thefile.txt
    c:\fullpath\thefile.txt
    quit
    
  2. execute ftp com a opção -s e especifique o nome do arquivo do script

    C:\>ftp -s:c:\scriptfile.txt
    
yosh m
fonte
No Windows XP (sim, eu sei), isso resulta em "Host desconhecido /?".
Peter Mortensen