linux - 检查 bash 脚本的 ftp 身份验证输出

标签 linux bash ftp sh

我运行了一个自动备份 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/

相关文章:

ftp - 使用 CloudFront 将文件从 S3 发送到第三方 FTP 服务器

linux - 使用 bash 执行多个进程

linux - 使用 sh 运行 bash 脚本

java - 在 Linux 中使用 CURL 进行 HTTP POST

linux - Bash 查找行号

linux - 有没有 `ssh-add` Linux alpine one liner

linux - sshd_config 上允许用户,忘记设置 root

bash - ${var?} 中的 bash 变量参数扩展中的问号是什么意思?

javascript - 如何使用nodejs中的multer将我的文件上传到另一台服务器?

android - 如何在 Activity 之间保持 FTP 连接(或任何连接对象) Activity