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、正确执行如下所示,如果检查到其他错误情况,程序会终止