Linux

如何檢測我是否有權訪問 FTP 伺服器上的資源?

  • December 27, 2014

我正在嘗試編寫 bash 腳本以使用lftp.

mkdir問題是,當有人為or輸入不可訪問的路徑時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`                                           

正如評論中所建議的,您可以通過使用超時來防止程序卡住,例如:

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在評論中提出了一個很好的建議:

您可以使用 Perl 或類似的更大的 FTP 腳本,這將允許您在每個命令之後執行顯式錯誤處理。

引用自:https://serverfault.com/questions/541803