Linux(二十七):Shell脚本自动化重装客户端(二)
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-