Como executo comandos FTP em uma linha?

18

Isto é o que estou fazendo quando entro em um FTP:

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

Eu 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, só preciso repetir algumas instruções e essa é a maneira mais fácil de encontrar entre dois dos meus sistemas.

WernerCD
fonte
11
Espere, o FTP não é para isso! FTP significa File Transfer Protocol. Você precisa de SSH.
Nickguletskii
quando você precisa pregar algumas unhas e tudo o que você tem é uma tábua de passar ... você se satisfaz com o que tem. Estou tentando o Telnet, mas o FTP funciona. Controle limitado do segundo sistema e o que não ... O eco do FTP funciona mesmo que seja uma "tábua de passar".
WernerCD
Bem, não funcionou para mim ...nick@AccessDenied:~$ ftp ftp> echo "hi" ?Invalid command ftp>
nickguletskii
11
ftpnão tem um echocomando. lftpfaz, mas é puramente local, então eu não vejo por que você iria querer fazer isso por si só ....
poolieby
@nickguletskii Sim ... Eu estava tentando obter uma resposta para o que estava fazendo de errado (talvez eu pudesse ter sido mais claro). Charles tem a resposta que funciona para mim (além da solução cli-php que obtive no SO).
WernerCD

Respostas:

20

Isso realmente é mais um trabalho para o SSH (como outros já apontaram), mas se você estiver determinado a usar o ftp, tente o 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 -cswitch que executa o comando e sai, mas parece estar quebrado na maioria das distribuições. -emanterá você conectado, a menos que você a quit.

Charlesbridge
fonte
11
Eeeeew ... Senhas de texto sem formatação ...
nickguletskii
-cfunciona bem para mim no Ubuntu.
poolie 14/09/11
2
Você não precisa colocar a senha na linha de comando: uma boa opção é inseri-la ~/.netrce garantir que esse seja o modo 0600. O FTP pode negociar senhas sem texto simples na ligação.
poolie 14/09/11
Isso funciona! Impressionante. Sim ... não é uma solução "boa", mas minhas opções são limitadas na segunda máquina, portanto o FTP, embora feio, funcione.
WernerCD
19

Encontrei esse segmento quando estava procurando uma maneira de 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: (chame de 'ftpcommands.txt')

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

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

 ftp -n < ftpcommands.txt

A opção -n evita que o ftp tente efetuar login automaticamente quando receber o comando 'abrir'.

Espero que ajude alguém. Como não consegui encontrar nada on-line que fosse essa solução, tive que descobrir por conta própria.

Jack
fonte
NOTA: se a sua transferência de arquivos falhar com uma resposta "200", tente adicionar o comando "passivo" logo antes da transferência para entrar no modo passivo.
Nick Zinger
2

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

Tudo o que você precisa fazer é instalar o pacote sshnas duas máquinas e seguir este guia para configurar logins sem senha.

E agora como chamá-lo:

ssh username@host echo "Hello World\!"

Por exemplo, sou eu que faço isso sozinho:

nick@AccessDenied:~$ ssh nick@localhost echo "Hello World\!"
Hello World!
nickguletskii
fonte
segundo sistema não tem SSH. Na verdade, tenho algo trabalhando em PHP via FTP_RAW, mas vou ver se não consigo fazer isso funcionar em algum momento.
WernerCD
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 pseudônimo "yoursite" para efetuar logon e executar quantos comandos você desejar.

Alan
fonte
0

Instale o busybox usando:

apt-get install busybox

O busybox pode funcionar no Linux ou no sistema incorporado, e usar ftpget e ftpput

busybox ftpput -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT

busybox ftpget -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT
user2328368
fonte