内部FTPサーバーにファイルをアップロードするbashスクリプトがあります。何らかの理由でFTPサーバーがオフラインの場合、スクリプトは失敗します。 FTPサーバーが稼働しているかどうかを確認し、稼働していない場合は30分で再試行するために、bashに条件を含めるにはどうすればよいですか?
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
nmap
の使用をお勧めします。例:
nmap REMOTE-IP -p FTP-PORT &> /dev/null
実際の例:
nmap 192.168.56.12 -p21 &> /dev/null
$?
でなかった場合は0
を確認してください。サービスが実行されていないことを意味します。
再試行するには、次のようなものを使用できます。
if [ "$?" -eq "0" ];
then
# do your job
else
echo "retry"
sleep 1800;
exec bash /path/to/script.sh
fi