如何检测我是否有权访问 FTP 服务器上的资源?

如何检测我是否有权访问 FTP 服务器上的资源?

我正在尝试编写 bash 脚本以便使用将文件从本地机器复制到 FTP lftp

问题是,当有人输入无法访问的路径mkdir或时put,则lftp返回:

Access failed: 550 /: Device or resource busy

我的 Bash 脚本卡住了,无法终止。

在执行下一个命令之前,如何检查是否能够访问资源?

这是我的代码的相关部分:

OUTPUT=`lftp -u $USER,$PASS -p $PORT $HOST <<HEREDOCUMENT
set ftp:ssl-allow no                                    
mkdir $FTP_DIR                                          
put $LOCAL_DIR/$LOCAL_FILE -o $FTP_DIR/$FTP_FILE        
bye                                                     
HEREDOCUMENT`                                           

答案1

正如评论中所建议的,您可以使用超时来防止进程卡住,例如:

OUTPUT=$(lftp -u $USER,$PASS -p $PORT $HOST <<EOF
set net:timeout 5
set net:max-retries 2
set net:reconnect-interval-base 5
set ftp:ssl-allow no                                    
mkdir $FTP_DIR                                          
put $LOCAL_DIR/$LOCAL_FILE -o $FTP_DIR/$FTP_FILE        
bye                                                     
EOF)

@Marki在评论中提出了很好的建议:

对于较大的 FTP 脚本,您可以使用 Perl 或类似的语言,它允许您在每个命令之后执行明确的错误处理。

相关内容