Aix
檢查文件是否已通過 SFTP 成功傳輸到目的地
我們有一個日常流程,使用腳本通過 FTP 將文件從一台伺服器移動到另一台伺服器。請在下面找到程式碼段:
fileTransferToDEST() { ftp -inv $DEST_IP 1>$2 <<END_SCRIPT quote USER $SRV_USER quote PASS $SRV_PASS lcd $4 cd $3 bi prompt hash mput $1 quit END_SCRIPT } fileTransferToDEST $filename $logpathwithfilename $destinationpath $sourcepath returnvalue=$? FtpStatus=`grep "Transfer complete" $logpathwithfilename` if [ "$FtpStatus" = '' -o "$returnvalue" != "0" ]; then echo;echo "FTP : Failed while transfering" exit 2 fi
我已被分配將 FTP 腳本轉換為使用 SFTP。我已經成功完成了在 SFTP 中進行無密碼登錄的所有必要步驟。請在下面找到使用 SFTP 的腳本:
fileTransferToDEST() { sftp $SRV_USER@$DEST_IP 1>$2 <<END_SCRIPT lcd $4 cd $3 mput $1 quit END_SCRIPT } fileTransferToDEST $filename $logpathwithfilename $destinationpath $sourcepath returnvalue=$? FtpStatus=`grep "Transfer complete" $logpathwithfilename` if [ "$FtpStatus" = '' -o "$returnvalue" != "0" ]; then echo;echo "FTP : Failed while transfering" exit 2 fi
但是我無法檢查/找到如何成功檢查文件是否已 100% 傳輸到目的地。我怎樣才能做到這一點?
申請後的程式碼
-b
…基於答案..fileTransferToDEST() { echo "mput $4/$1 $3/" | sftp -b - $SRV_USER@$DEST_IP } fileTransferToDEST $filename $logpathwithfilename $destinationpath $sourcepath returnvalue=$? if [ "$returnvalue" != "0" ]; then echo;echo "FTP : Failed while transfering" exit 2 fi
OpenSSH
sftp
使用退出程式碼(您正在執行的操作)指示其結果。如果它返回 0,則一切正常。如果返回 1,則說明有問題。
無需解析任意消息的輸出。
只需以批處理模式執行它,這樣它就會在任何錯誤時中止。為此使用
-b -
switch(-
表示您仍然希望使用標準輸入提供命令,而不是通過通常遵循 的文件提供命令-b
)。