#!/bin/bash
##############################################
#文件上传
#作者:jasenhua
#日期:2019-05-29
#调用方法:sh upload_file.sh yyyymmdd CLS TXT_FILE_PATH OK_FILE_PATH LOG_PATH
#调用示例:sh upload_file.sh 20190524 test /home/edw_user/test/20190524/test_20190524.txt /home/edw_user/test/20190524/test_20190524.ok /home/edw_user/test/sftplog/
##############################################
#SFTP配置信息
#用户名
USER=edw_user
#密码
PASSWORD=edw_user123
#目标IP
IP=10.11.0.143
#端口
PORT=22
etldate=$1
source_system=$2
txt_file_path=$3
ok_file_path=$4
log_path=$5
#目标SFTP目录
DESDIR=/data/app/${source_system}/${etldate}/
if [ ! -d ${log_path} ]; then
mkdir -p ${log_path}
fi
shlog()
{
local line_no msg
line_no=$1
msg=$2
echo "[upload_file.sh][$line_no]["`date "+%Y%m%d %H:%M:%S"`"] $msg ">> ${log_path}upload_file${etldate}.log
echo "[upload_file.sh][$line_no]["`date "+%Y%m%d %H:%M:%S"`"] $msg "
}
upload()
{ GF_SRCFILE=$1
lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <<EOF
mput $1 -O $2
ls -l $2 >> ${txt_file_path%/*}/tmp.txt
bye
EOF
FTPSIZE=`cat ${txt_file_path%/*}/tmp.txt |sed -n '/'${GF_SRCFILE##*/}'/p' |awk '{print $5}'`
LOCALSIZE=`ls -l $GF_SRCFILE |awk '{print $5}'`
shlog $LINENO "服务器文件大小为$FTPSIZE"
shlog $LINENO "本地文件大小为$LOCALSIZE"
if [ "$FTPSIZE" != "" ] && [ "$FTPSIZE" == "$LOCALSIZE" ]; then
shlog $LINENO "$1文件上传到$2成功"
else
shlog $LINENO "$1文件上传到$2失败"
rm -rf ${txt_file_path%/*}/tmp.txt
exit 1
fi
rm -rf ${txt_file_path%/*}/tmp.txt
}
shlog $LINENO "*****************************${etldate}数据文件检查是否存在****************************************"
cd ${txt_file_path%/*} ;
if [ ! -f ${txt_file_path} ];then
shlog $LINENO "${txt_file_path}文件不存在,请检查卸数!"
exit 1
fi
if [ ! -f ${ok_file_path} ];then
shlog $LINENO "${ok_file_path}文件不存在,请检查卸数!"
exit 1
fi
shlog $LINENO "*****************************${etldate}数据文件传输开始****************************************"
#######上传文件##################################
#首先上传TXT数据文件
upload ${txt_file_path} ${DESDIR}
#上传OK标志文件
upload ${ok_file_path} ${DESDIR}
exit 0