Como posso detectar se tenho acesso a um recurso em um servidor FTP?

2

Estou tentando escrever um script bash para copiar arquivos da máquina local para o FTP usando lftp .

O problema é que, quando alguém insere um caminho inacessível para mkdir ou put , então lftp retorna:

Access failed: 550 /: Device or resource busy

E meu script Bash fica preso e não termina.

Como posso verificar se consigo acessar o recurso antes de executar os próximos comandos?

Aqui está a seção relevante do meu código:

OUTPUT='lftp -u $USER,$PASS -p $PORT $HOST <<HEREDOCUMENT
set ftp:ssl-allow no                                    
mkdir $FTP_DIR                                          
put $LOCAL_DIR/$LOCAL_FILE -o $FTP_DIR/$FTP_FILE        
bye                                                     
HEREDOCUMENT'                                           
    
por Wiktor Mociun 26.09.2013 / 12:21

1 resposta

0

Como sugerido nos comentários, você pode evitar que o processo fique preso usando um tempo limite, por exemplo:

OUTPUT=$(lftp -u $USER,$PASS -p $PORT $HOST <<EOF
set net:timeout 5
set net:max-retries 2
set net:reconnect-interval-base 5
set ftp:ssl-allow no                                    
mkdir $FTP_DIR                                          
put $LOCAL_DIR/$LOCAL_FILE -o $FTP_DIR/$FTP_FILE        
bye                                                     
EOF)

@Marki fez uma excelente sugestão em um comentário:

larger FTP scripts you may use Perl or similar, which would allow you to perform explicit error handling after each command.

    
por 27.12.2014 / 17:55

Tags