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

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

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

Shell脚本自动化重装客户端

 

Shell脚本编写的前提:

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

 

Shell编写的目的:

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

 

操作步骤:

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

 

完整脚本如下:

#!/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')
    password=$(cat jdbc.properties | grep "password" | 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


jdbcdriver=com.ciphergateway.aoe.plugin.engine.AOEDriver
jdbcurl=jdbc:aoe:mysql://10.1.1.191:3306/meterSphere?user=root&password=123456&useUnicode=yes&characterEncoding=UTF-8