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 ftp@ftp.com>> ftp.txt
echo bin >> ftp.txt
echo get test.txt >> ftp.txt
echo bye >> ftp.txt

ftp -s:ftp.txt

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:password@ftp.mydomain.com/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:password@ftp.mydomain.com/path/file.ext

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

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
    

No Windows XP (sim, eu sei), isso resulta em "Host desconhecido /?".
Peter Mortensen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.