[root@xxx scripts]# cat checkDataxLog.sh
#!/bin/sh
###############################################################################################################
#Script name: checkDataxLog.sh
#Script description: check Datax log
#Current Release Version: 1.0.0
#Script Owner: He ,Haibo
#Latest editor: He, Haibo
#Support platform: Linux OS for redhat and centos.
#Date: 2021/11/8---first Version for checkDataxLog.
#Change log:
#Descript:checkDataxLog.sh
#
###############################################################################################################
export LANG=en_US
osbox=`uname`
RHversion=$(cat /proc/version | sed 's/[^0-9]//g' | cut -b -3)
###打印日志函数
log_info(){
DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
USER_N=`whoami`
echo "${DATE_N} ${USER_N} execute $0 [INFO] $@"
}
log_error(){
DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
USER_N=`whoami`
echo -e "/033[41;37m ${DATE_N} ${USER_N} execute $0 [ERROR] $@ /033[0m"
}
fn_log(){
if [[ $? -eq 0 ]];then
log_info "$@ sucessed."
echo -e "/033[32m $@ sucessed. /033[0m"
else
log_error "$@ failed."
echo -e "/033[41;37m $@ failed. /033[0m"
fi
}
checkExecuteUser(){
username=`id | awk -F ' ' {'print $1'} | awk -F '(' {'print $2'} | awk -F ')' {'print $1'}`
if [[ ${username} == "root" ]];then
continue
else
fn_log "Current excute user is not sysinsp ,shell will exist."
exit 1
fi
}
###Create /tmp/log if not exist.
mkdirLogPath(){
if [[ ! -d /datax/logs ]];then
mkdir -p /datax/logs
chmod 767 /datax/logs
fi
CheckLinuxLogPath="/datax/logs"
CheckLinuxLog=*_$(date +%y%m%d).log
}
###Get OS Arch Linux or not
getOsArch(){
if [[ "$osbox" == "Linux" ]];then
continue
else
fn_log "Current OS is $osbox,shell is exit now."
echo 0
exit 0
fi
}
###Get redhat or centos
getOsCentosOrRedhat(){
cat /proc/version | grep -iE "redhat|centos" > /dev/null
if [[ $? == 0 ]];then
continue
else
echo "Current OS is not centos or redhat."
echo 1
exit 1
fi
}
###Get OS Version
getOsVerion(){
###判断系统是否为Redhat,如果不是则退出,支持Redhat|Centos 7版本
cat /proc/version | grep -i redhat > /dev/null
if [[ $? == 0 ]];then
if [[ "$RHversion" -ge 310 ]];then
OSVersion="redhat7"
else
echo "Current Rehat Version will not support."
echo 1
exit 1
fi
else
if [[ "$RHversion" -ge 310 ]];then
OSVersion="centos7"
else
echo "Current Rehat Version will not support."
echo 1
exit 1
fi
fi
}
checkDataxLog(){
cd /datax/logs
##ORA-01031: insufficient privileges
for logFile in `ls *_$(date +%y%m%d).log`
do
ERRORNUM=0
for FAILEDNUMS in `cat $logFile | grep -w "读写失败总数" | grep -v grep | grep -v "#" | awk -F ':' {'print $2'} | sed 's/[ /t]//g' | xargs`
do
if [[ $FAILEDNUMS -gt 0 ]];then
let ERRORNUM+=1
if [[ $ERRORNUM -ge 3 ]];then
echo "Please check /datax/logs/$logFile,读写失败总数"
exit
fi
fi
done
ORAOthers=`cat $logFile | egrep -w "ORA-*" | wc -l`
if [[ $ORAOthers -gt 0 ]];then
for ORAINFO in `cat $logFile | grep ORA-* | awk -F '具体错误信息为' {'print $2'} | awk -F ': ' {'print $2'} | xargs`
do
echo "Please check /datax/bin/$logFile,$ORAINFO"
exit
done
fi
ERROROthers=`cat $logFile | egrep -w "ERROR" | wc -l`
if [[ $ERROROthers -gt 0 ]];then
echo "Please check /datax/bin/$logFile,has ERROR"
fi
done
}
main(){
checkExecuteUser
mkdirLogPath
getOsArch
getOsCentosOrRedhat
getOsVerion
checkDataxLog
}
main
版权声明:本文为博主原创文章,未经博主允许不得转载。
Datax