Verificando o servidor FTP on-line a partir do script Bash?

1

Eu tenho um script bash que envia arquivos para um servidor FTP interno. Se o servidor FTP estiver offline por qualquer motivo, o script falhará. Como faço para incluir um condicional no bash para verificar se o servidor ftp está ativo e se não, tente novamente em 30 minutos?

    
por Squid_Vicious 15.06.2017 / 16:07

2 respostas

1
while true; do
    if nc -z -w1 "$SERVER" 21; then
        echo "FTP is up."
        break
    else
        echo "FTP is down. Will try again."
        sleep $((30*60))
    fi
done
    
por Florian Diesch 15.06.2017 / 16:31
1

Sugiro usar nmap , por exemplo:

nmap REMOTE-IP -p FTP-PORT &> /dev/null

Exemplo real:

nmap 192.168.56.12 -p21 &> /dev/null

, em seguida, verifique $? , se não for 0 , significa que o serviço não está sendo executado.

Para tentar novamente, use algo como:

if [ "$?" -eq "0" ];
then 
 # do your job
else 
 echo "retry"
 sleep 1800; 
 exec bash /path/to/script.sh
fi
    
por Ravexina 15.06.2017 / 16:24