Aix

檢查文件是否已通過 SFTP 成功傳輸到目的地

  • June 17, 2019

我們有一個日常流程,使用腳本通過 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

OpenSSHsftp使用退出程式碼(您正在執行的操作)指示其結果。

如果它返回 0,則一切正常。如果返回 1,則說明有問題。

無需解析任意消息的輸出。

只需以批處理模式執行它,這樣它就會在任何錯誤時中止。為此使用-b -switch-表示您仍然希望使用標準輸入提供命令,而不是通過通常遵循 的文件提供命令-b)。

引用自:https://unix.stackexchange.com/questions/525377