Execute a sessão FTP a partir do script bash

2

Estou tentando escrever um script BASH para testar se um site FTP que possuo está executando. Portanto, quero que o script bash se conecte ao site FTP, efetue login com uma conta fictícia e redirecione a saída para um arquivo que, em seguida, posso confirmar que o login foi bem-sucedido.

(Eu sei que colocar usuário / senha em um arquivo não é recomendado, mas essa conta fictícia é chrooted para um diretório vazio e não pode escapar para o shell, e em qualquer caso eu sou o único usuário que pode fazer o login para um prompt de shell.)

Estou usando o shell BASH no Ubuntu.

Eu criei um arquivo chamado "ftp-dummy" que se parece com isso

username  
password

E então fiz isso a partir do prompt:

adam$  ftp my.ftpsite.com  < ftp-dummy

Isso não funciona - não vejo a mensagem normal de boas-vindas e a saída é:

Password:Name (my.ftpsite.com:adam) :

Eu tentei remover o espaço entre os < e o nome do arquivo - mesmo resultado.

Se eu redirecionar a saída para um testfile, o arquivo de teste mostrará:

Name (my.ftpsite.com:adam): ?Invalid command

E ainda recebo uma solicitação de senha no STDOUT

Eu também tentei usar o echo e obter o mesmo resultado:

echo -e "username \npassword \n" | ftp my.ftpsite.com 

Não vejo por que não estou vendo a mensagem normal de boas-vindas ou por que a entrada não está sendo lida no arquivo. Qualquer ajuda seria muito apreciada.

Obrigado,
Adam

    
por Adam Salkin 03.05.2010 / 21:38

3 respostas

4

use um cliente ftp scriptável como o lftp.

você usa assim:

lftp -u login,pass host.com -e "get file.txt;exit "

ou ainda mais simples - use wget:

wget -O file ftp://login:[email protected]/file.txt
    
por 03.05.2010 / 21:49
1

Encontrei problemas ao redirecionar STDIN com clientes ftp do UNIX antes. Embora eu sempre tente trabalhar com eles, achei que esperava ser mais adequado em muitas situações.

Você também pode dar uma olhada no check_ftp do nagios-plugins, já que você poderia usá-lo para seus propósitos . Muitas vezes, há pouca necessidade de reinventar a roda.

Para responder especificamente à sua pergunta, o arquivo netrc do FTP fornecerá os detalhes de autenticação em seu nome.

    
por 03.05.2010 / 21:51
0

Há um sinalizador em ftp que você pode usar para interromper a solicitação automática de senha quando você envia o comando do usuário.

homem ftp

ftp -n

Então você pode canalizar seus comandos (incluindo usuário e pass) para ftp.

    
por 03.05.2010 / 22:32