我们有一个日常流程,使用脚本通过 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
)。