SFTP를 통해 파일이 대상으로 성공적으로 전송되었는지 확인하십시오.

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

SFTP를 사용하도록 FTP 스크립트를 변환하라는 임무를 받았습니다. 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

답변1

OpenSSH는 sftp종료 코드(이미 수행한)를 사용하여 결과를 나타냅니다.

0을 반환하면 모든 것이 정상입니다. 1을 반환하면 뭔가 잘못된 것입니다.

임의 메시지의 출력을 구문 분석할 필요가 없습니다.

오류가 발생하면 중단하려면 배치 모드로 실행하세요. 사용-b -변화이를 위해( -일반적으로 파일이 따르는 파일을 통하지 않고 표준 입력을 사용하여 명령을 제공하고 싶다는 의미 -b).

관련 정보