jdk的自动化部署

1、shell脚本如下:

#!/bin/bash

host_name=(
wyl01
wyl02
wyl03
)

host_ip=(
10.10.252.151 
10.10.252.112 
10.10.252.127
)


#java部分信息
JDK_VERSION='jdk1.8.0_131'                                #jdk的版本
JDK_INSTALL_PATH='/opt'                                   #jdk的安装路径


#1 步骤输出 紫色
#2 正确输出 绿色
#3 错误输出 红色
#4 提示输出 蓝色
#5 警告输出 黄色
#根据不同的颜色打印出提示信息
function echo_fun(){
  if [ $# -ge 2 ];then
     params_num=$1
     shift 1
     params_mes=$@
  else
    echo_fun 3 请至少输入两个参数 echo_fun ..
    exit
  fi
  case $params_num in
        1)
        echo -e "\n\033[35;40;1m ****************************** ${params_mes} ******************************\033[0m\r\n"
        ;;
        2)
        echo -e "\033[32;40;1m ${params_mes}\033[0m\r\n"
        ;;
        3)
        echo -e "\n\033[31;40;1m ${params_mes}\033[0m\r\n"
        ;;
        4)
        echo -e "\033[36;40;1m ${params_mes}\033[0m\r\n"
        ;;
        5)
        echo -e "\033[33;40;1m ${params_mes} \033[0m\r\n"
        ;;
        *)
        echo_fun 3 参数异常第一个参数应为1,2,3,4,5
        ;;
   esac
}


function check_ok(){
  if [ $? -ne 0 ];then
    echo_fun 3 执行失败,请查看日志
    exit 1
  fi
}

function check_cluster_catalog_exist(){
for ip in ${host_name[*]}
do
   num=$(ssh $ip test -d $1 &&  echo 1 || echo 0 )
 if [ $num -eq 1 ];then
   echo_fun 3 "$ip机器上的$2目录存在,请注意检查" 
   exit
  fi
done
}



#检查环境变量--多台
function check_cluster_etc_profile(){
for ip in ${host_name[*]}
do
  #检查环境变量中是否已经配置了
  cluster_path_num=$(ssh $ip cat /etc/profile |grep -w $1 |wc -l )
  if [ ${cluster_path_num} -ge 1 ];then
   echo_fun 5 $ip机器上环境变量中已经配置,请检查准确性
   exit
  fi 
done
}


#解压jdk的二进制包,并设置软连接,和改变其属组属性。
function extract_jdk(){
cd $SOFTWARE_PATH
sleep 1s
echo_fun 4 解压jdk二进制包,并创建软连接
tar -xf ${JDK_VERSION}.tar.gz  -C  ${JDK_INSTALL_PATH}
ln -s ${JDK_INSTALL_PATH}/${JDK_VERSION}   ${JDK_INSTALL_PATH}/java
}

#同步jdk安装包和软连接到其他的集群机器上
function rsync_jdk(){
echo_fun 4 同步jdk目录和软连接到其他的集群机器上
sleep 1s
cd ${JDK_INSTALL_PATH}
for ((i=1;i<${#host_name[*]};i++))
do
rsync -av java  ${JDK_VERSION} ${host_name[i]}:/opt  >/dev/null 2>&1
done
  check_ok
  echo_fun 2 同步成功
}




#安装jdk
function step_fun_1(){

echo_fun 4  检查java安装目录是否存在

#循环检查/opt/java目录是否存在
check_cluster_catalog_exist ${JDK_INSTALL_PATH}/java java

if [ $num -eq 0 ];then
  #解压jdk包
   extract_jdk
  #同步
   rsync_jdk
fi

echo_fun 4 检查环境变量
check_cluster_etc_profile ${JDK_INSTALL_PATH}/java ${JDK_INSTALL_PATH}/${JDK_VERSION}

if [ ${cluster_path_num} -lt 1 ];then
   echo_fun 4 配置环境变量
   for ((i=0;i<${#host_name[*]};i++))
   do
      echo_fun 4 配置${host_name[i]}机器上的环境变量
      ssh -Tq root@${host_name[i]} <<remotessh
      echo -e '\nexport JAVA_HOME=${JDK_INSTALL_PATH}/java\nexport PATH=\${JAVA_HOME}/bin:\$PATH'>> /etc/profile
      source /etc/profile
      exit
remotessh
   done
fi 
}

2、正确执行如下所示,如果检查到其他错误情况,程序会终止

猜你喜欢

转载自blog.csdn.net/wyl9527/article/details/81074351