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

我试图编写bash脚本文件从本地机器复制到FTP使用lftp

问题是,当有人input无法访问的mkdirpath或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` 

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

 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在评论中提出了一个很好的build议:

更大的FTP脚本,你可以使用Perl或类似的,这将允许你在每个命令后执行显式的error handling。