Questão Como fazer upload de um arquivo por FTP a partir da linha de comando?


Eu preciso enviar um único arquivo para o servidor FTP do Ubuntu. Essa operação deve ser feita em um script (no modo não interativo). Qual é a sintaxe certa para ftp?

Estou tentando isso, sem sucesso:

$ ftp -u ftp://user:secret@ftp.example.com my-local-file.txt
ftp: Invalid URL `ftp://'

98


origem


Como faço para man page? - Ignacio Vazquez-Abrams
Eu não sei muito sobre o ftp ferramenta no Ubuntu, mas parece que está sufocando no ftp://. tente tirar isso talvez? - Nate Koppenhaver
@ IgnacioVazquez-Abrams man ftp na linha de comando - c.gutierrez
Semelhante: Sincronizando arquivos via FTP, mas para vários arquivos. - kenorb
Estou recebendo '-u opção desconhecida'. - Robert Reiz


Respostas:


Aqui está uma abordagem:

$ ftp -n <<EOF
open ftp.example.com
user user secret
put my-local-file.txt
EOF

Alternativamente, crie (ou edite) o arquivo ~ / .netrc no diretório home do usuário que irá executar o comando ftp, dê a ele perms apropriados (chmod 0600 ~/.netrc) e adicione o seguinte:

# ~/.netrc
machine ftp.example.com
login user
password secret

Em seguida, omita as informações de login, como em:

$ echo put my-local-file.txt | ftp ftp.example.com

Além disso, veja como você pode fazer a mesma coisa usando o curl:

$ curl -T my-local-file.txt ftp://ftp.example.com --user user:secret

156



Uau, eu não sabia curl ftp suportado! É super útil. - Sébastien
+1 para o curl solução. Por que se incomodar com o outro? - Asaph
@Asaph porque o curl não está instalado onde eu preciso fazer isso, então a outra solução veio a calhar. Obrigado. - bobef
+1 para a onda. Limpo, limpo e direto ao ponto! No Debian / Ubuntu "apt-get install curl", se você não tiver. - GTodorov
a curl solução é o melhor e o mais fácil


Posso recomendar ftp-upload. É uma pequena ferramenta que você pode instalar no Ubuntu através de sudo apt-get install ftp-upload.

Exemplo de uso:

ftp-upload -h {HOST} -u {USERNAME} --password {PASSWORD} -d {SERVER_DIRECTORY} {FILE_TO_UPLOAD}

13



Você pode fornecer um link para a ferramenta ou sua documentação? - bwDraco
Oi DragonLord, se você está no Ubuntu e você instalou o ftp-upload (usando o comando que eu dei antes) você pode apenas fazer man ftp-upload. Espero que ajude. - Floris


Você precisa corrigir o URL fornecido no seu extrato. Você recebeu o erro porque o URL estava incompleto - estava faltando o nome do objeto que você está enviando. Depois de adicionar o nome do arquivo depois de 'exemplo.com', como eu fiz abaixo, você verá que o único comando realmente funciona como você pretendia.

Tente isto:

ftp -u ftp: // usuário: secret@ftp.example.com/my-local-file.txt my-local-file.txt


5



ftp: opção inválida - 'u' - Babken Vardanyan
De fato :( ftp: u: opção desconhecida - webDEVILopers


Instale o ncftp e use o ncftpput ferramenta que vem junto, praticamente algo como esta sintaxe:

ncftpput -u ftpuser -p ftppass ftphostname /path/where/to/upload localfile.name
if [ $? -ne 0 ]; then echo "Upload failed"; fi

Você pode até verificar se o status do upload é bom ou ruim. O cliente ftp normal também pode ser usado junto com o esperado.


4





Você também pode tentar lftp.

Aqui está um exemplo:

lftp -e 'cd folder1/folder2; put /home/path/yourfile.tar; bye' -u user,password ftp.theserver.com

Consulte aqui para mais detalhes

.


2





Carregar um arquivo para um local remoto via linha de comando

#!/bin/bash
#$1 is the file name
#usage:this_script <filename>
HOST='yourhost'
USER="youruser"
PASSWD="pass"
FILE="abc.php"
REMOTEPATH='/html'

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd $REMOTEPATH
put $FILE 
quit
END_SCRIPT
exit 0

2





Eu uso o BusyBox ftpput para fazer isso:

# /bin/busybox ftpput

BusyBox v1.20.2 (Debian 1:1.20.0-7) multi-call binary.

Usage: ftpput [OPTIONS] HOST [REMOTE_FILE] LOCAL_FILE

Upload a file to a FTP server

    -v,--verbose            Verbose
    -u,--username USER      Username
    -p,--password PASS      Password
    -P,--port NUM           Port

Nota: busybox ftpget funciona bem também.


1