Linux自动化安装JDK

一、自动化部署jdk思路

  a、可以使用一台Linux机器充当http服务器,jdk版本资源可以放在http服务器上,这样就可以统一使用wget下载jdk。

官方的jdk直接使用wget下载,因为没有点击确认接受协议,所以下载的jdk不能正常安装。

二、安装http服务器,准备初始环境

# 安装httpd
yum -y  install httpd
# 启动httd服务器( centos7使用: systemctl start httpd.service)
service httpd start
# 关闭防火墙
sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service
# 切换目录
cd /var/www
# 创建存放app目录 (将jdk版本远程上传到该目录下)
mkdir soft
# 可以使用http://[ip]/soft/访问http服务器是否成功
# 生成免密key
ssh-keygen
#其他机器如果没有expect命令,每一个机器需要安装
yum -y install expect

三、编写自动化脚本

  vi boot.sh
#!/bin/bash

SERVERS="node2 node3 node4 node5"
PASSWORD=xxx
BASE_SERVER=192.168.182.xxx

auto_ssh_copy_id() {
    expect -c "set timeout -1;
        spawn ssh-copy-id $1;
        expect {
            *(yes/no)* {send -- yes
;exp_continue;}
            *assword:* {send -- $2
;exp_continue;}
            eof        {exit 0;}
        }";
}

ssh_copy_id_to_all() {
    for SERVER in $SERVERS
    do
        auto_ssh_copy_id $SERVER $PASSWORD
    done
}

ssh_copy_id_to_all


for SERVER in $SERVERS
do
    scp install_jdk.sh root@$SERVER:/root
    ssh root@$SERVER "/root/install_jdk.sh $BASE_SERVER"
done
vi install_jdk.sh
#!/bin/bash

yum install -y wget
wget $1/soft/jdk-8u161-linux-x64.tar.gz
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/local
rm -rf jdk-8u161-linux-x64.tar.gz
sed -i '/export JAVA_HOME=/usr/local/jdk1.8.0_161/'d /etc/profile
sed -i '/export PATH=$PATH:$JAVA_HOME/bin/'d /etc/profile
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/local/jdk1.8.0_161
export PATH=$PATH:$JAVA_HOME/bin
EOF
source /etc/profile

  a、赋予执行权限

chmod +x boot.sh install_jdk.sh

  b、只需要修改SERVERS,PASSWORD,BASE_SERVER三个属于值即可,

    1、SERVERS代表需要安装机器的ip,多个ip用空格隔开

    2、PASSWORD所有机器密码,规定所有机器的密码一样

    3、BASE_SERVER是代表充当http服务器ip

    4、根据下载的jdk版本,需要修改install_jdk.sh脚本

三、测试

  a、执行./boot.sh则自动化完成部署

yexiangyang

moyyexy@gmail.com


 

原文地址:https://www.cnblogs.com/moy25/p/8687970.html