Como executo comandos FTP em uma linha?

13

Isso é o que estou fazendo quando faço login em um FTP:

ftp user:password@server
ftp: user:password@server: Unknown host
ftp> echo HELLO WORLD!
ftp> quit

Gostaria de fazer um comando FTP de uma linha ...

ftp user:password@server -command "echo HELLO WORLD"

ou

"echo HELLO WORLD" | ftp user:password@server 

Algo semelhante ... como parte de um script que estou tentando criar. Nada está sendo transferido, eu só preciso repetir algumas instruções e esta é a maneira mais fácil que eu encontrei para fazer isso entre dois dos meus sistemas.

    
por WernerCD 14.09.2011 / 20:18

4 respostas

19

Isso realmente é mais um trabalho para o SSH (como outros apontaram), mas se você está determinado a usar o ftp, tente lftp . Está disponível gratuitamente para todas as versões atualmente suportadas do Ubuntu. Você pode instalá-lo com o comando sudo apt install lftp

lftp -u username,password -e "your command;quit" ftp.site.com

O lftp documenta um comutador -c que executa o comando e depois sai, mas parece estar quebrado na maioria das distribuições. -e manterá você conectado, a menos que você emita um quit .

    
por charlesbridge 14.09.2011 / 20:55
13

Eu encontrei este segmento quando eu estava procurando uma maneira de ter um único comando ftp executar uma transferência de arquivos desta máquina para o servidor ftp. Aqui está como:

Crie um arquivo com os comandos ftp nele: (chame-o de 'ftpcommands.txt')

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

Em seguida, execute o comando ftp e alimente o arquivo:

 ftp -n < ftpcommands.txt

A opção -n evita que o ftp efetue login automaticamente quando recebe o comando 'open'.

Espero que isso ajude alguém. Não consegui encontrar nada on-line que fosse essa solução, então tive que descobrir por mim mesmo.

    
por Jack 10.08.2013 / 23:50
2

Você não pode usar o FTP para executar comandos remotamente. Significa File Transfer Protocol. O que você realmente precisa é de SSH.

Tudo o que você precisa fazer é instalar o pacote ssh em ambas as máquinas e, em seguida, seguir este guia para configurar as senhas menos logins.

E agora como chamar:

ssh username@host echo "Hello World\!"

Por exemplo, este sou eu fazendo isso para mim:

nick@AccessDenied:~$ ssh nick@localhost echo "Hello World\!"
Hello World!
    
por nickguletskii 14.09.2011 / 20:39
1

Complementando a resposta @charlesbridge, inclua no seu arquivo ~ / .bashrc o seguinte:

alias yoursite="lftp -u <username> -e \"<commandA;commandB>\" yoursite.com"

Origem do arquivo:

source ~/.bashrc

Agora use o alias "yoursite" para fazer logon e executar quantos comandos quiser.

    
por Alan 27.09.2015 / 13:31