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
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?
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
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