web-dev-qa-db-ja.com

BashスクリプトからFTPサーバーをオンラインで確認しますか?

内部FTPサーバーにファイルをアップロードするbashスクリプトがあります。何らかの理由でFTPサーバーがオフラインの場合、スクリプトは失敗します。 FTPサーバーが稼働しているかどうかを確認し、稼働していない場合は30分で再試行するために、bashに条件を含めるにはどうすればよいですか?

2
Squid_Vicious
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
2
Florian Diesch

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
2
Ravexina