linux centos shell脚本自动化部署jdk

自动化部署

自动化安装jdk

在一台机器上安装httpd(yum install -y httpd) 我把jdk安装包拷贝在html/soft(新建一个soft)

1.写一个脚本outlogin.sh,配置这台机器到其他机器的免密ssh登录,并把install_jdk.sh脚本发到各个虚拟机

2.写一个脚本install_jdk.sh,让他们下载、安装、配置环境变量

当第一次用ssh连接其他计算机时会让你输入yes/no 第二次用ssh就不会出现了,如果你连过可以输入这条命令清除缓存rm -rf ~/.ssh/known_hosts

配置免密登录时需要输入登录机器的密码,我们用一个人机交互模式来处理expect

你可以在机器上先expect一下如果没有这个命令 yum install –y expect 安装这个命令

下面是脚本的具体内容

第一个脚本outlogin.sh:

#!/bin/bash

 

servers="mini2 mini3" //在这可以配置你要自动化连接的服务器以空格隔开(需要hosts配置)

passwd="hadoop" //在这输入密码 必须所有的机器密码相同  

// 下面这个方法的方法体是固定格式 抄下来 注意分号和空格

copy_id(){ //$1第一个参数$2第二个参数

       expect -c "set timeout -1; //最多等待多少秒  -1是永远等待

       spawn ssh-copy-id $1;     //spawn 执行一条命令ssh-cop-id (前提:已经ssh-keygen)

       expect {

                *(yes/no)* {send --yes\r;exp_continue;}   //出现询问yes/no  自动输入yes

                *password:* {send --$2\r;exp_continue;}  //出现询问password 自动输入hadoop

                efo     {exit0;}

       }";

}

 

give_server_passwd(){

       for server in $servers   //遍历服务器

       do

                copy_id $server $passwd   //调用上边的方法两个参数传进去

       done

}

give_server_passwd    //执行上边的方法 其实是这个脚本是从这一行开始执行

 

for server in $servers   //遍历服务器 向每一台服务器发送我们的insatll_jdk.sh脚本

       do scp install_jdk.sh root@$server:/root

       ssh root@$server /root/install_jdk.sh

       done

 

 

第二个脚本insatll_jdk.sh:

#!/bin/bash

 

base_server=mini1

yum install -y wget  //安装wget命令

wget$base_server/soft/jdk-7u45-linux-x64.tar.gz //去httpd上先下载

mkdir /root/apps 

tar -zxvf jdk-7u45-linux-x64.tar.gz -C/root/apps  //解压到指定文件夹

cat >> /etc/profile << EOF        //重定向 相当于cat EFO-EFO到/etc/profile

exportJAVA_HOME="/root/apps/jdk1.7.0_45"

export PATH=\$PATH:\$JAVA_HOME/bin

EOF

source/etc/profile     

你可能感兴趣的:(linux)