千家信息网

OGG运维优化脚本(三)-信息修改类--快速加表

发表于:2024-10-24 作者:千家信息网编辑
千家信息网最后更新 2024年10月24日,文件名:add.sh所在路径:$HOME/ggadd功能:批量加表脚本的优化版,用于针对少量加表需求,包括重复配置表过滤功能以及附加日志自动增加功能该脚本通过alias方式写入账户系统配置文件.pro
千家信息网最后更新 2024年10月24日OGG运维优化脚本(三)-信息修改类--快速加表

文件名:add.sh

所在路径:$HOME/ggadd

功能:批量加表脚本的优化版,用于针对少量加表需求,包括重复配置表过滤功能以及附加日志自动增加功能

该脚本通过alias方式写入账户系统配置文件.profile .bash_profile通过命令使用

日志路径:$HOME/ggscript/ggadd

具体脚本内容


#!/bin/bash#条件判断,确定调用时参数是否完整#格式必须为 进程名 表名 区域名  操作用户if [ $# -eq 0 ]; then        echo "info EXTRACT TABLE AREA user"        exit 2fiif [ $# -eq 1 ]; then        echo "info EXTRACT TABLE AREA user"        exit 2fiif [ $# -eq 2 ]; then        echo "info EXTRACT TABLE AREA user"        exit 2fiif [ $# -eq 3 ]; then        echo "info EXTRACT TABLE AREA user"        exit 2fibackuptime=`date +%Y%m%d-%H%M`datenow=`date +%Y%m%d%H`echo $backuptime > ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log' cd $HOME/ggscript/ggaddecho $backuptimeecho "This script can only insert one  table( by RenYi)"val=$1echo $2 > AddTemparea=$3name=$4#echo $valcat AddTemp#echo $areaecho "--------insert process name------" >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'echo $val >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'val=`echo $val|tr a-z A-Z `#进程类型判断,如果为E开头则归类为抽取进程,如果P开头归类为发送进程if [ `echo $val|grep ^E` ];then         IType=EXTRACTelif [ `echo $val|grep ^P` ];then         IType=POSTelif  [ `echo $val|grep ^R` ];then        echo "can not operate the REPLICAT process"         echo "can not operate the REPLICAT process"  >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'         echo "process break off"         echo "process break off"  >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'        exit 2else        echo "only can operate the EXTRACT and the POST process"         echo "can not operate the REPLICAT process"  >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'        echo "process break off"        echo "process break off"  >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'        exit 2fi#定位进程文件并判断参数输入进程是否存在val=`echo $val.PRM|tr A-Z a-z`echo $valecho "--------insert file name------" >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'echo $val >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'cd $HOME/ggserver/dirprmif [ ! -e $val ]; then        echo "the EXTRACT is not exist"         echo "the EXTRACT is not exist"  >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'        exit 2fi#定位区域并判断参数输入的区域是否存在cd $HOME/ggscript/ggaddecho $valcat $HOME/ggserver/dirprm/$val |grep Begin|sed 's/--//g'|sed 's/-Begin//g' > arealistcat arealistecho "------------area check-------------- " >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'check=`grep -w $area arealist`if [ "$check" = "$area" ];then        echo "area is exist"        echo "area is exist"   >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'else        echo "area is not exist"        #echo "area is not exist"  >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'        #exit 2fi#重复表判断,过滤掉已经被配置的表cat $HOME/ggserver/dirprm/$val|awk '/--'$area'-Begin/,/--'$area'-End/{if(i>1)print x;x=$0;i++}' > tempawk -F '--'  '($1) { print $1}' temp > temp2rm -rf tempsed  -e '/^$/d'  temp2 > temp3rm -rf temp2awk -F ',' '{print $1}' temp3 >temp4rm -rf temp3awk -F ';' '{print $1}' temp4 >temp5rm -rf temp4echo "Confirm the tables that have increased"cat temp5|awk  -F 'TABLE '  '{print $2}' > AddedTemprm -rf temp5sed '/^$/d' AddedTemp > AddedTemp2sed '/^$/d' AddTemp > AddTemp2cat AddedTemp2 |sort -n > AddTablecomm -12  AddTable AddTemp > Duplicateecho "--------Table Check---------------"cat AddTemp >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'echo "--------Table Check---------------">> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'check=`grep -w $2 Duplicate`if [ "$check" = "$2" ];then        echo "The table has being added"         echo "The table has being added"  >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'        echo "process break off"        exit 2else       echo "The table not be add"        echo "The table not be add"  >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'fi#配置文件备份 cp $HOME/ggserver/dirprm/$val $HOME/ggserver/dirprm/bak/$val.$backuptime.bakecho "backup complete"echo "backup complete" >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'#表插入操作 sed 's/^/TABLE /' AddTemp > table1sed 's/$/;/' table1 > table2rm -f table1echo "-----The Operator is '$name'--------" >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'sed '1 i\--'$datenow'-'$name'-add' table2 > table3rm -f table2                        mv table3 table2                echo "inserting table"                        sed  '/'$area'-Insert/r table2                        ' $HOME/ggserver/dirprm/$val > $HOME/ggserver/dirprm/tem3                rm -f $HOME/ggserver/dirprm/$val                mv $HOME/ggserver/dirprm/tem3 $HOME/ggserver/dirprm/$val#判断,如果为EXTRACT进程则写入附加日志,如果为发送进程,则跳过if [ "$IType" == "EXTRACT" ];then                sed 's/^/add trandata /' AddTemp > addtrandata                 cd $HOME/ggserver                        echo dblogin `more $HOME/ggserver/dirprm/$val|grep USERID` > dirdat/addtrandata                        cat  $HOME/ggscript/ggadd/addtrandata >> dirdat/addtrandata                        echo   OBEY dirdat/addtrandata |./ggsci                 echo "process complete"                echo "process complete" >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'                exit 2elif [ "$IType" == "POST" ];then                 echo "process complete"                echo "process complete" >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'                exit 2else                 echo "process complete"                echo "process complete" >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'fi


0