OGG运维优化脚本(三)-信息修改类--快速加表
admin
2023-04-27 01:21:59
0次

文件名:add.sh

所在路径:$HOME/ggadd

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

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

日志路径:$HOME/ggscript/ggadd

具体脚本内容


#!/bin/bash


#条件判断,确定调用时参数是否完整

#格式必须为 进程名 表名 区域名  操作用户
if [ $# -eq 0 ]; then
        echo "info EXTRACT TABLE AREA user"
        exit 2
fi


if [ $# -eq 1 ]; then
        echo "info EXTRACT TABLE AREA user"
        exit 2
fi

if [ $# -eq 2 ]; then
        echo "info EXTRACT TABLE AREA user"
        exit 2
fi

if [ $# -eq 3 ]; then
        echo "info EXTRACT TABLE AREA user"
        exit 2
fi


backuptime=`date +%Y%m%d-%H%M`
datenow=`date +%Y%m%d%H`

echo $backuptime > ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'

 cd $HOME/ggscript/ggadd
echo $backuptime
echo "This script can only insert one  table( by RenYi)"

val=$1
echo $2 > AddTemp
area=$3
name=$4
#echo $val
cat AddTemp
#echo $area

echo "--------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=EXTRACT

elif [ `echo $val|grep ^P` ];then
         IType=POST

elif  [ `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 2
else
        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 2
fi

#定位进程文件并判断参数输入进程是否存在
val=`echo $val.PRM|tr A-Z a-z`
echo $val
echo "--------insert file name------" >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'
echo $val >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'

cd $HOME/ggserver/dirprm
if [ ! -e $val ]; then
        echo "the EXTRACT is not exist"
         echo "the EXTRACT is not exist"  >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'
        exit 2
fi
#定位区域并判断参数输入的区域是否存在
cd $HOME/ggscript/ggadd

echo $val
cat $HOME/ggserver/dirprm/$val |grep Begin|sed 's/--//g'|sed 's/-Begin//g' > arealist
cat arealist
echo "------------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 2
fi

#重复表判断,过滤掉已经被配置的表
cat $HOME/ggserver/dirprm/$val|awk '/--'$area'-Begin/,/--'$area'-End/{if(i>1)print x;x=$0;i++}' > temp
awk -F '--'  '($1) { print $1}' temp > temp2
rm -rf temp
sed  -e '/^$/d'  temp2 > temp3
rm -rf temp2
awk -F ',' '{print $1}' temp3 >temp4
rm -rf temp3
awk -F ';' '{print $1}' temp4 >temp5
rm -rf temp4
echo "Confirm the tables that have increased"
cat temp5|awk  -F 'TABLE '  '{print $2}' > AddedTemp
rm -rf temp5
sed '/^$/d' AddedTemp > AddedTemp2
sed '/^$/d' AddTemp > AddTemp2
cat AddedTemp2 |sort -n > AddTable
comm -12  AddTable AddTemp > Duplicate

echo "--------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 2
else
       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.bak
echo "backup complete"
echo "backup complete" >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'

#表插入操作
 sed 's/^/TABLE /' AddTemp > table1
sed 's/$/;/' table1 > table2
rm -f table1

echo "-----The Operator is '$name'--------" >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'


sed '1 i\
--'$datenow'-'$name'-add
' table2 > table3
rm -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 2
elif [ "$IType" == "POST" ];then
                 echo "process complete"
                echo "process complete" >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'
                exit 2
else
                 echo "process complete"
                echo "process complete" >> ''$HOME'/gglog/ggadd/InsertLog-'$backuptime'.log'
fi


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...