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

0

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

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 

UPDATE 2

Engraçado é quando eu logar no mesmo servidor FTP através do comando 'FTP' com o mesmo usuário e passá-lo funciona como um encanto, mas quando eu logar através de lftp com o mesmo usuário e passe eu consegui logar no servidor, mas assim que eu der o comando ls , ele mostrará a seguinte saída.

lftp [email protected]:~> ls
'ls' at 0 [Delaying before reconnect: 24]
    
por MegaMind 30.05.2017 / 18:42

1 resposta

0

Não use ftp. O problema que você está tendo provavelmente está relacionado à confusão geral da 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 do cliente para o servidor, e a conexão de dados do servidor para o cliente!

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

No entanto, na minha opinião, continuar a usar o FTP não é uma boa alternativa hoje. É simplesmente desatualizado, segurança e protocolo sábio.

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

Se você precisar de envios anônimos, o (s) http (s) é uma boa alternativa. Por meio de uma solicitação POST ou com o WebDAV. Http pode também ser 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. Está caindo fora de uso e, como conseqüê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 sérias 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!

    
por vidarlo 17.11.2017 / 11:44