'Conexão redefinida por peer' no lftp durante o upload de arquivos

'Conexão redefinida por peer' no lftp durante o upload de arquivos

Estou trabalhando em um projeto onde vários Raspberry Pis coletam dados de sensores e os registram em vários arquivos, várias vezes ao dia. Eu queria escrever um pequeno script para enviar todos esses arquivos para um servidor FTP no final do dia com o crontab. Então escrevi um script usando lftp que funcionou no início, mas depois começou a mostrar erros.

Abaixo está o script e a saída detalhada. Como posso consertar isso?

    #!/bin/bash
    HOST='ftp://xyz.com'
    USER='xxxxxx'
    PASS='xxxxxx'
    TARGETFOLDER='/home/xxxx'
    SOURCEFOLDER='/home/pi/yyyy'

    lftp -f "
    open $HOST
    user $USER $PASS
    debug -o lftp_debug.txt
    lcd $SOURCEFOLDER
    mirror --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER
    bye
    "

saída:

---- Connecting to xyz.com (xx.xx.xx.xx) port 21   
<--- 220 (vsFTPd 3.0.3)   
---> FEAT    
<--- 211-Features:   
<---  EPRT    
<---  EPSV    
<---  MDTM    
<---  PASV   
<---  REST STREAM    
<---  SIZE 
<---  TVFS
<--- 211 End    
---> USER XXXX  
<--- 331 Please specify the password.    
---> PASS XXXX   
<--- 230 Login successful.   
---> PWD   
<--- 257 "/home/XXXX" is the current directory   
---> MKD /home   
<--- 550 Create directory operation failed.    
---> MKD /home/XXXX
<--- 550 Create directory operation failed.
---- CWD path to be sent is `/home/XXXX'  
---> CWD /home/XXXX   
<--- 250 Directory successfully changed.    
---> PASV    
**** control-socket: Connection reset by peer
---- Closing data socket   
---- Closing control socket 

##ATUALIZAÇÃO 2##

O engraçado é que quando eu faço login no mesmo servidor FTP através do comando 'FTP' com o mesmo usuário e passo, funciona perfeitamente, mas quando eu faço login lftpcom o mesmo usuário e passo, consegui fazer login no servidor, mas assim que conforme eu dou lso comando, ele mostra a seguinte saída.

lftp [email protected]:~> ls
`ls' at 0 [Delaying before reconnect: 24]

##ATUALIZAÇÃO 3##

Tentei usar SFTP e funcionou corretamente. Espero que isso economize o tempo de alguém.

Responder1

Não use FTP. O problema que você está enfrentando provavelmente está relacionado à confusão geral na direção da conexão no FTP. O FTP usa duas portas: uma conexão de comando e uma conexão de dados. Tradicionalmente a conexão de comando era de cliente para servidor, e a conexão de dados de servidor para cliente!

PASV é o oposto; ele instrui o servidor a escutar a conexão de dados do cliente e informar ao cliente o número da porta. Parece que esse comportamento (inesperado para muitos) é o que está mordendo você.

Porém, na minha opinião, continuar usando o FTP não é uma boa alternativa hoje. É simplesmente desatualizado, em termos de segurança e de protocolo.

Você tem várias alternativas ao FTP. Se você usa autenticação, scp/sftp é uma boa alternativa. Requer exatamente uma porta, é autenticado e criptografado.

Se você precisar de envios anônimos, http(s) é uma boa alternativa. Através de uma solicitação POST ou com WebDAV. HTTP podetambémser configurado para usar autenticação e pode ser criptografado com TLS (https). Ele também abre apenas um único canal para dados e comandos.

FTP é um protocolo de 40 anos. Ele está caindo em desuso e, como consequência, o software não está recebendo tanta atenção quanto os servidores web e servidores ssh mais populares e, portanto, há uma chance maior de vulnerabilidades graves sobreviverem no código-fonte.

Além disso, o comando para SCP seria muito mais simples: scp * $user@$host:$targetfolder- e você poderia usar autenticação baseada em chave para evitar senhas no script!

informação relacionada