bash shell 里的一些读文件、调用java程序、ftp操作

本文介绍了一个名为 EOS 的批处理系统的配置细节和日志管理流程,包括关键目录结构设置、错误和正常日志记录方法,以及状态管理机制。此外,还详细描述了 dump 脚本的工作流程,涵盖了从数据获取到 FTP 传输的全过程。

文件Common.sh:


     
SCRIPT_DIR=${BV_EOS_BAT_ROOT}/script
          
LIB_DIR=${BV_EOS_BAT_ROOT}/lib
        
SEND_DIR=${BV_EOS_BAT_ROOT}/send

SEND_CFG=${BV_EOS_BAT_ROOT}/send/cfg

SEND_TRANS=${BV_EOS_BAT_ROOT}/send/trans

SEND_TRANS_ERR=${BV_EOS_BAT_ROOT}/send/trans_err

SEND_WORK=${BV_EOS_BAT_ROOT}/send/work

SEND_BACKUP=${BV_EOS_BAT_ROOT}/send/backup

RECV_DIR=${BV_EOS_BAT_ROOT}/recv

RECV_CFG=${BV_EOS_BAT_ROOT}/recv/cfg

RECV_TRANS=${BV_EOS_BAT_ROOT}/recv/trans

RECV_TRANS_ERR=${BV_EOS_BAT_ROOT}/recv/trans_err

RECV_WORK=${BV_EOS_BAT_ROOT}/recv/work

RECV_BACKUP=${BV_EOS_BAT_ROOT}/recv/backup

STG_DIR=${BV_EOS_BAT_ROOT}/stg
STG_CFG=${BV_EOS_BAT_ROOT}/stg/cfg
STG_TRANS=${BV_EOS_BAT_ROOT}/stg/trans
STG_TRANS_ERR=${BV_EOS_BAT_ROOT}/stg/trans_err
STG_WORK=${BV_EOS_BAT_ROOT}/stg/work
STG_BACKUP=${BV_EOS_BAT_ROOT}/stg/backup

QRY_CFG=${BV_EOS_BAT_ROOT}/queryindex/cfg
MAIL_ERR=${BV_EOS_BAT_ROOT}/mail/send_err

AFFI_CFG=${BV_EOS_BAT_ROOT}/affi_ls/cfg

STATUS_DIR=${BV_EOS_BAT_ROOT}/status

AFFI_DIR=${BV_EOS_BAT_ROOT}/affi_ls

AFFI_TRANS=${BV_EOS_BAT_ROOT}/affi_ls/trans

AFFI_TRANS_ERR=${BV_EOS_BAT_ROOT}/affi_ls/trans_err

AFFI_WORK=${BV_EOS_BAT_ROOT}/affi_ls/work

AFFI_BACKUP=${BV_EOS_BAT_ROOT}/affi_ls/backup

LOG_DIR=${BV_EOS_BAT_ROOT}/log

SEND_LOG=${BV_EOS_BAT_ROOT}/log/send

RECV_LOG=${BV_EOS_BAT_ROOT}/log/recv

STAG_LOG=${BV_EOS_BAT_ROOT}/log/stg

AFFI_LOG=${BV_EOS_BAT_ROOT}/log/affi

MAIL_LOG=${BV_EOS_BAT_ROOT}/log/mail

NOTIF_LOG=${BV_EOS_BAT_ROOT}/log/notif

BATCHSERVICENAME=EosBatch

HULFT_PATH=/opt/hulft/bin


export      BV_EOS_BAT_ROOT        
export      SCRIPT_DIR
export      LIB_DIR               
export      SEND_DIR          
export      SEND_CFG          
export      SEND_TRANS            
export      SEND_TRANS_ERR        
export      SEND_WORK             
export      SEND_BACKUP           
export      RECV_DIR          
export      RECV_CFG          
export      RECV_TRANS            
export      RECV_TRANS_ERR        
export      RECV_WORK             
export      RECV_BACKUP
export      STG_DIR
export      STG_CFG
export      STG_TRANS
export      STG_TRANS_ERR
export      STG_WORK
export      STG_BACKUP
export      STATUS_DIR            
export      AFFI_DIR          
export      AFFI_TRANS            
export      AFFI_TRANS_ERR        
export      AFFI_WORK             
export      AFFI_BACKUP           
export      LOG_DIR               
export      SEND_LOG          
export      RECV_LOG          
export      STAG_LOG          
export      AFFI_LOG          
export      MAIL_LOG          
export      NOTIF_LOG             
export      BATCHSERVICENAME
export      HULFT_PATH

. ${BV_VAR_ROOT}/etc/bv1to1.conf.sh

export MAIL_LIB; MAIL_LIB=$BV1TO1_VAR/eosCommon/lib
classpath=$classpath:$LIB_DIR/eosbatch.jar:$MAIL_LIB/activation.jar:$MAIL_LIB/mail.jar:$MAIL_LIB/eoscommon.jar:$LIB_DIR/eosonline.jar:$LIB_DIR/struts.jar:$BV1TO1/CLASSES/commercecore.jar:$BV1TO1/webapps/webappCommon.jar

WriteErrLog( )
{
    if [  -z $4  ]
    then
        LEVEL="ERROR"
    else
        LEVEL=$4
    fi
    TIME=`date '+%Y/%m/%d %H:%M:%S'`
   
    case $1 in   
    1)   echo  "ERROR, $TIME, $LEVEL  ${MODULE}で  $2 " >> ${RECV_LOG}/$3        
        ;;
    2)   echo  "ERROR, $TIME, $LEVEL  ${MODULE}で  $2 " >> ${SEND_LOG}/$3           
        ;;
    3)   echo  "ERROR, $TIME, $LEVEL  ${MODULE}で  $2 " >> ${STAG_LOG}/$3           
        ;;
    4)   echo  "ERROR, $TIME, $LEVEL  ${MODULE}で  $2 " >> ${AFFI_LOG}/$3           
        ;;
    5)   echo  "ERROR, $TIME, $LEVEL  ${MODULE}で  $2 " >> ${MAIL_LOG}/$3           
        ;;
    6)   echo  "ERROR, $TIME, $LEVEL  ${MODULE}で  $2 " >> ${NOTIF_LOG}/$3           
        ;;                      
    esac   
}

WriteNormalLog( )
{

    if [  -z $3  ]
    then
        LEVEL="INFO"
    else
        LEVEL=$3
    fi
   
    TIME=`date '+%Y/%m/%d %H:%M:%S'`

    case $1 in
   
    1)  logger -p local2.info "$LEVEL,  $TIME,  ${MODULE}で  $2"   
        ;;
       
    2)  logger -p local1.info "$LEVEL,  $TIME,  ${MODULE}で  $2"
        ;;
       
    3)  logger -p local3.info "$LEVEL,  $TIME,  ${MODULE}で  $2"
        ;;
       
    4)  logger -p local4.info "$LEVEL,  $TIME,  ${MODULE}で  $2"
        ;;

    5)  logger -p local5.info "$LEVEL,  $TIME,  ${MODULE}で  $2"
        ;;
       
    6)  logger -p local6.info "$LEVEL,  $TIME,  ${MODULE}で  $2"
        ;;
    esac   
             
}

StatusManager( )
{
    if [ $# -eq "1"  ]
    then
        $BV1TO1/bin/java -cp $classpath  -DBVService=$BATCHSERVICENAME com.nec.jp.eosweb.batch.common.StatusFlagManager $1
        VALUE=$?
        if [ $VALUE  -ne "1"  ]
        then
            return $VALUE
        else
            return $VALUE
        fi
    elif [ $# -eq "2"  ]
    then
        if [ "$2" = "FLAG"  ]
        then
            $BV1TO1/bin/java -cp $classpath  -DBVService=$BATCHSERVICENAME com.nec.jp.eosweb.batch.common.StatusFlagManager $1  $2
            VALUE=$?
            if [ $VALUE  -ne "1"  ]
            then
                return $VALUE
            else
                return $VALUE
            fi
        else
            $BV1TO1/bin/java -cp $classpath  -DBVService=$BATCHSERVICENAME  com.nec.jp.eosweb.batch.common.StatusFlagManager  $1  $2
            VALUE=$?
            if [ $VALUE  -ne "1"  ]
            then
                return 0
            else
                return 1
            fi
        fi
       
       
    elif [ $# -eq "3"  ]
    then
        if [ $3 -eq "0"  ]
        then
            $BV1TO1/bin/java -cp $classpath  -DBVService=$BATCHSERVICENAME  com.nec.jp.eosweb.batch.common.StatusFlagManager  $1  $2
            VALUE=$?
            if [ $VALUE  -ne "1"  ]
            then
                return 0
            else
                return 1
            fi
        else
            return 1
        fi       
     
   elif [ $# -eq "4"  ]
   then 
       if [ $3 -eq "1"  ]
       then
                $BV1TO1/bin/java -cp $classpath  -DBVService=$BATCHSERVICENAME  com.nec.jp.eosweb.batch.common.StatusFlagManager  $1  $2
                VALUE=$?
                if [ $VALUE  -ne "1"  ]
                then
                    $BV1TO1/bin/java -cp $classpath  -DBVService=$BATCHSERVICENAME  com.nec.jp.eosweb.batch.common.StatusFlagManager  $4  "3"
                    VALUE=$?
                    if [ $VALUE  -ne "1"  ]
                    then               
                        return 0
                    else
                        return 1
                    fi
                else
                    return 1
                fi        
       else
            return 1      
       fi
  
    else
        return 1
    fi
}

文件dump.sh

#!/bin/bash
 
BV_VAR_ROOT=/home/bvsys/bv1to1

BV_EOS_BAT_ROOT=$BV_VAR_ROOT/batch
. $BV_EOS_BAT_ROOT/script/Common.sh


STG_DUMP_DIR=${STG_WORK}/$1
DMPFILE="$1"".tar"
HOSTNAME="$2"
USER="bvsys"
PASSWORD="0WE5jKaU"

DATA_FLG=$1
CFG_FILE="$1".lst""


SHELLNAME=`basename $0`


TMPPROGRAMID=`echo $SHELLNAME|cut -d. -f1`
PROGRAMID="Stg""${DATA_FLG}"


ERR_FILE_HEAD="$TMPPROGRAMID"_"$DATA_FLG"
ERR_TIME=`date '+%Y%m%d%H%M%S'`
ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err
MODULE="Out put batch AP"


WriteNormalLog  "3"   "Start"

if [ $# -ne "2" ]
then
    WriteErrLog "3"    "SMS6002E  Wrong Parameter"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3"     "Batch AP error end" "ERROR"
    exit 2   
fi


StatusManager $PROGRAMID  "FLAG"
STATUS=$?

if [ $STATUS -eq "1"  ]
then

    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err   
    WriteErrLog  "3"  "SMS6005E Take status errors。"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Batch AP error end" "ERROR"
    exit 2
fi


if [ $STATUS -eq "3"  ]
then
    WriteNormalLog  "3" "Before Ap is processing" "WARNING"
    exit 1
fi

if [ $STATUS -eq "5"  ]
then
    WriteNormalLog  "3" "Not do remains and Ap nomally end" "ERROR"
    exit 0
fi

 

$BV1TO1/bin/java -cp $classpath  -DTimePath=${STG_WORK} -DBVService=$BATCHSERVICENAME com.nec.jp.eosweb.batch.common.StatusTimeManager $PROGRAMID
STATUS=$?

if [ $STATUS -ne "0"  ] || [ ! -e ${STG_WORK}/$PROGRAMID".TIME"  ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err
    #STATUS = 3
    StatusManager $PROGRAMID 3
    STATUS=$?
    if [ $STATUS -ne "0"  ]
    then
        WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    fi      
    WriteErrLog  "3"  "SMS6006E take start time error"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi

exec 4<&0 0<${STG_WORK}/$PROGRAMID".TIME"
read STGSTIME
exec 0<&4
rm -f  ${STG_WORK}/$PROGRAMID".TIME"

if [ -z "$STGSTIME" ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err
    #STATUS= 3     
    StatusManager $PROGRAMID 3
    STATUS=$?
    if [ $STATUS -ne "0"  ]
    then
        WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    fi      
    WriteErrLog  "3"  "SMS6006E take start time error"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi

StatusManager $PROGRAMID 1
STATUS=$?
if [ $STATUS -eq "1"  ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err
    WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi

if [ ! -e ${STG_CFG}/${CFG_FILE} ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err
    #STATUS = 3
    StatusManager $PROGRAMID 3
    STATUS=$?
    if [ $STATUS -ne "0"  ]
    then
         #error logを出力する
        WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    fi        
    WriteErrLog  "3"  "SMS6007E parameter is error"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi

if [ ! -d ${STG_DUMP_DIR}  ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err

    StatusManager $PROGRAMID 3
    STATUS=$?
    if [ $STATUS -ne "0"  ]
    then
         #error logを出力する
        WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    fi    
   
    WriteErrLog  "3"  "SFL6123E error directory"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi

STG_LOG_FILE="stg_common.log"
cd ${STG_DUMP_DIR}

STGNSTIME=`date '+%Y/%m/%d %H:%M:%S'`

YEARTIME=`echo $STGSTIME | awk '{print substr($0,3,2)}'`
MMDDTIME=`echo $STGSTIME | awk '{print substr($0,6,5)}'`
HMSTIME=`echo $STGSTIME | awk '{print substr($0,12,8)}'`
DUMPTIME="$MMDDTIME""/""$YEARTIME"" ""$HMSTIME"

$BV1TO1/bin/bv_stg_tool dump "$DUMPTIME" -n ${STG_CFG}/${CFG_FILE}  >> ${STAG_LOG}/"${STG_LOG_FILE}"
STATUS=$?
if [ $STATUS -ne "0"  ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err
   
    $BV1TO1/bin/java -cp $classpath -DTimePath=${LIB_DIR}  -DBVService=$BATCHSERVICENAME com.batch.common.StatusTimeManager ${PROGRAMID}    "/"$STGNSTIME/""
    STATUS=$?
   
    if [ $STATUS -ne "0"  ]
    then
        WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    fi
   
    StatusManager $PROGRAMID 3
    STATUS_TMP=$?
    if [ ${STATUS_TMP} -ne "0"  ]
    then
        WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    fi    
    if [ $STATUS -eq "4" ] || [ $STATUS -eq "3" ]
    then
        WriteNormalLog  "3" "operated object is not exist"  "WARNING"
        exit 0
    fi    
    WriteErrLog  "3"  "SMD6311E dump error"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi
 
STGNETIME=`date '+%Y/%m/%d %H:%M:%S'`
$BV1TO1/bin/java -cp $classpath -DTimePath=${LIB_DIR}  -DBVService=$BATCHSERVICENAME com.batch.common.StatusTimeManager ${PROGRAMID}    "/"$STGNSTIME/""    "/"$STGNETIME/""
STATUS=$?
if [ $STATUS -ne "0"  ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err  

    WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi

DUMP_TIME=`date '+%Y%m%d%H%M%S'`
DUMP_FILE=${DATA_FLG}.${DUMP_TIME}."tar"
tar cvf ${DUMP_FILE} current*
STATUS=$?
if [ $STATUS -ne "0"  ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err
    ERR_DIR=${DATA_FLG}."${ERR_TIME}"
    mkdir  ${STG_TRANS_ERR}/${ERR_DIR}
    STATUS=$?
    if  [ $STATUS -eq "0"  ]
    then
        mv  ${STG_DUMP_DIR}/*  ${STG_TRANS_ERR}/${ERR_DIR}/
    fi
    StatusManager $PROGRAMID 3
    STATUS=$?
    if [ $STATUS -ne "0"  ]
    then
        WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    fi     
    WriteErrLog  "3"  "SFL6114E tar error"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi

cd ${SCRIPT_DIR}
mv  ${STG_DUMP_DIR}/${DUMP_FILE}  ${STG_TRANS}/${DUMP_FILE}
STATUS=$?
if [ $STATUS -ne "0"  ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err
    mv  ${STG_DUMP_DIR}/${DUMP_FILE}  ${STG_TRANS_ERR}/${DUMP_FILE}
    rm -rf  ${STG_DUMP_DIR}/*
    StatusManager $PROGRAMID 3
    STATUS=$?
    if [ $STATUS -ne "0"  ]
    then
        WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    fi     
    WriteErrLog  "3"  "SFL6115E copy file error"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi

rm -r ${STG_DUMP_DIR}/*
STATUS=$?
if [ $STATUS -ne "0"  ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err
    mv  ${STG_TRANS}/${DUMP_FILE}  ${STG_TRANS_ERR}/${DUMP_FILE}
    StatusManager $PROGRAMID 3
    STATUS=$?
    if [ $STATUS -ne "0"  ]
    then
        WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    fi     
    WriteErrLog  "3"  "SFL6116E Delete file error"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi

#ftp transfer file
FTP_LOG="ftp.log"
sftp -vn << EOF > ${STAG_LOG}/"${FTP_LOG}"
 open $HOSTNAME
 user $USER  $PASSWORD
 binary
 cd   ${STG_TRANS}
 put  ${STG_TRANS}/${DUMP_FILE}
 quit
EOF
grep "226 Transfer complete."  ${STAG_LOG}/"${FTP_LOG}"
STATUS=$?
rm -f  ${STAG_LOG}/"${FTP_LOG}"

if [ $STATUS -ne "0"  ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err
    mv  ${STG_TRANS}/${DUMP_FILE}  ${STG_TRANS_ERR}/${DUMP_FILE}
    StatusManager $PROGRAMID 3
    STATUS=$?
    if [ $STATUS -ne "0"  ]
    then
        WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    fi     
    WriteErrLog  "3"  "SFL6117E ftp transfer file error"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi

mv  ${STG_TRANS}/${DUMP_FILE}  ${STG_BACKUP}/${DUMP_FILE}
STATUS=$?
if [ $STATUS -ne "0"  ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err
    mv  ${STG_TRANS}/${DUMP_FILE}  ${STG_TRANS_ERR}/${DUMP_FILE}
    StatusManager $PROGRAMID 3
    STATUS=$?
    if [ $STATUS -ne "0"  ]
    then
        WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    fi     
    WriteErrLog  "3"  "SFL6123E  copy file to backup directory error"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi

StatusManager $PROGRAMID 3
STATUS=$?
if [ $STATUS -eq "1"  ]
then
    MODULE="Out put batch AP"
    ERR_TIME=`date '+%Y%m%d%H%M%S'`
    ERR_FILE_NAME="${ERR_FILE_HEAD}"_"${ERR_TIME}".err
    WriteErrLog  "3"  "SMS6003E make status equal 3 error"  "${ERR_FILE_NAME}"
    WriteNormalLog  "3" "Ap abort" "ERROR"
    exit 2
fi

WriteNormalLog  "3"  "Ap normally end"
exit 0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值