欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux(二十七):Shell脚本自动化重装客户端(二)

程序员文章站 2022-06-06 08:41:47
...

Shell脚本自动化重装客户端(二)
跟二十六区别在于,因为增加了两个参数导致数据库的密码和账号提取不到,需要稍微改下脚本。

Shell脚本编写的前提:
每次在Linux下安装客户端都需要手动删除客户端、安装客户端和从数据库中提取表结构操作,步骤比较繁琐。

 

Shell编写的目的:
能够自动化删除客户端,重装客户都安和从数据库提取表结构。

操作步骤:
删除原有客户端安装的目录
删除原有安装包
解压缩(安装包)
进入解压缩目录,执行安装客户端脚本
从配置文件jdbc.properties里读取数据库信息,并提取表结构。
 

增加的参数:

username=admin
password=lianShi2021

需要修改的脚本:

    #user=$(cat jdbc.properties | grep "user" | awk -F '=' '{print $3}'|sed 's/&/\n/g' |sed '2d')  #原来的因为加了username和password找不到了
    user=$(cat jdbc.properties |grep "jdbcurl" | awk -F '=' '{print $3}' |sed 's/&/\n/g'|sed '2d')
    #password=$(cat jdbc.properties | grep "password" | awk -F '=' '{print $4}'|sed 's/&/\n/g' |sed '2d') #原来的因为加了username和password找不到了
    password=$(cat jdbc.properties |grep "jdbcurl" | awk -F '=' '{print $4}'|sed 's/&/\n/g'|sed '2d')

完整脚本如下:

#!/bin/bash

#删除原有客户端
client_installdir=`find /opt -name "aoeclient_auto"`
if [ -d $client_installdir ];then 
   rm -rf $client_installdir
fi
casbdir=`find /opt -name "casb"`
if [ -d $casbdir ];then
   rm -rf $casbdir
fi

#删除原有安装包
#当前存在客户端解压的安装包目录
extract_dir="$( cd "$( dirname "$0" )" && pwd  )"
cd ${extract_dir}
clientzip=`ls AOEClient*.zip`

clientdir_old=`ls -l |grep ^d |grep "AOEClient" |awk '{print $9}'`
if [ -d $clientdir_old ];then 
   rm -rf $clientdir_old
fi

#AOEClient解压缩
echo "-----------------------------------------------------------"
echo "-----------------客户端AOEClient解压缩----------------------"
unzip $clientzip
echo "-----------------------------------------------------------"
echo "-----------安装客户端,安装路径:/opt/aoeclient_auto----------"
clientdir=`ls -l |grep ^d |grep "AOEClient" |awk '{print $9}'`
cd $clientdir
chmod +x aoe-client.sh

sh aoe-client.sh /opt/aoeclient_auto
echo "-----------------------------------------------------------"
#从配置文件读取数据库参数
#当前存在客户端安装包的目录(脚本执行目录)
echo "脚本执行路径(客户端安装包路径):",${extract_dir}
cd ${extract_dir}
if [ -f "jdbc.properties" ];then
    url=$(cat jdbc.properties | grep "jdbcurl" | awk -F '=' '{print $2}')
    aoe=$(echo "$url" | awk -F '//' '{print $1}' )
    result=$(echo "$aoe" | grep "aoe")
    if [[ $result == "" ]];then
       exit 1
    fi
    dbtype=$(cat jdbc.properties | grep "jdbc:" |awk -F ':' '{print $3}')
    dbhost=$(echo "$url" | awk -F '//' '{print $2}' | awk -F ':' '{print $1}')
    port=$(echo "$url" | awk -F '//' '{print $2}' | awk -F ':' '{print $2}' | awk -F '/' '{print $1}')
    #user=$(cat jdbc.properties | grep "user" | awk -F '=' '{print $3}'|sed 's/&/\n/g' |sed '2d')  #原来的因为加了username和password找不到了
	user=$(cat jdbc.properties |grep "jdbcurl" | awk -F '=' '{print $3}' |sed 's/&/\n/g'|sed '2d')
    #password=$(cat jdbc.properties | grep "password" | awk -F '=' '{print $4}'|sed 's/&/\n/g' |sed '2d') #原来的因为加了username和password找不到了
	password=$(cat jdbc.properties |grep "jdbcurl" | awk -F '=' '{print $4}'|sed 's/&/\n/g'|sed '2d')
    database=$(echo "$url" | awk -F '//' '{print $2}' | awk -F ':' '{print $2}' | awk -F '/' '{print $2}' |  awk -F '?' '{print $1}')

	echo "提取表结构的数据库信息:",$dbtype,$host,$port,$user,$password,$database

    #AOEClient提取表结构
    clientdir_new=`find /opt -name "aoeclient_auto"`
    if [ -d $clientdir_new ];then
        echo "-----------------------------------------------------------"
        echo "-----------------客户端AOEClient提取表结构------------------"
        cd $clientdir_new/extractor
        extractorjar=`ls extractor*.jar`
        if [ -f $extractorjar ]; then
            echo "开始执行提取表结构:java -jar $extractorjar --op=extract --db-type=$dbtype --host=$dbhost --port=$port --user=$user --password=$password --database=$database"
            #java -jar $extractorjar --op=extract --db-type=mysql --host=10.1.1.247 --port=3306 --user=root --password=123456 --database=demo
            java -jar $extractorjar --op=extract --db-type=$dbtype --host=$dbhost --port=$port --user=$user --password=$password --database=$database
        else
            echo "无法找到extractor.jar包,无法提取表结构"
        fi
    else
        echo "未找到AOEClient安装目录"
    fi
else
    echo "未找到配置文件jdbc.properties,无法获取数据库信息"
fi

jdbc.properties配置文件

[config]
host=10.1.1.181
username=admin
password=xxx
        
jdbcdriver=com.ciphergateway.aoe.plugin.engine.AOEDriver
jdbcurl=jdbc:aoe:mysql://10.1.1.191:3306/autodemo?user=root&password=123456&useUnicode=yes&characterEncoding=UTF-