我运行了一个自动备份 shell 脚本,它运行良好,但出于某种原因,FTP 阻止了我几分钟。我想添加重试和等待功能。下面是我的代码示例。
echo "Moving to external server"
cd /root/backup/
/usr/bin/ftp -n -i $FTP_SERVER <<END_SCRIPT
user $FTP_USERNAME $FTP_PASSWORD
mput $FILE
bye
END_SCRIPT
登录失败后我收到下面的消息
Authentication failed. Blocked.
Login failed.
Incorrect sequence of commands: PASS required after USER
我需要捕获此类输出并让代码尝试休眠几分钟,然后再试一次。
想法?
最佳答案
如果您可以在感兴趣的系统上安装其他程序,我建议您看一下 lftp
。
使用 lftp
可以手动设置重新连接之间的时间等参数。
要使用 lftp
实现您的目标,您必须调用以下命令
lftp -u user,password ${FTP_SERVER} <<END
set ftp:retry-530 "Authentication failed"
set net:reconnect-interval-base 60
set net:reconnect-interval-multiplier 10
set net:max-retries 10
<some more custom commands>
END
如果 ftp:retry-530
之后的模式与服务器 lftp
的 530 回复匹配,则每 60*10 秒尝试重新连接一次。
关于linux - 检查 bash 脚本的 ftp 身份验证输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18107797/