Linux
如何檢測我是否有權訪問 FTP 伺服器上的資源?
我正在嘗試編寫 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 腳本,這將允許您在每個命令之後執行顯式錯誤處理。