从 Bash 脚本在线检查 FTP 服务器?

从 Bash 脚本在线检查 FTP 服务器?

我有一个将文件上传到内部 FTP 服务器的 bash 脚本。如果 FTP 服务器因某种原因处于离线状态,则脚本将失败。如何在 bash 中包含条件来检查 FTP 服务器是否已启动,如果没有启动,则在 30 分钟后重试?

答案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

答案2

我建议使用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

相关内容