任务把weijie主机jdk文件安装到weijie1中。
首先再各台主机中安装必要的命令:
expect、wget、httpd、ssh
执行命令 如:expect提示命令不存在,则分别安装命令

yum install expect
yum install wget
yum install httpd
yum install ssh

开启httpd,方便通过http请求来访问虚拟机linux系统中的文件

service httpd start

第一步:
分别在两台主机关闭防火墙:
service iptables stop
把要部署的文件拷贝到www的目录下
cp 拷贝的文件路径 cd /var/www/html/目录下

[root@weijie ~]# cp jdk-8u161-linux-x64.tar.gz /var/www/html/soft/

再确认y即可。如果拷贝成功后,可以通过本机访问虚拟机www中的资源
会出现
这里写图片描述
第二步:
再配置自动化部署脚本
习惯在根目录下创建script文件夹,里面分别创建boot.sh(实现免密登录)和install.sh()两个脚本文件

mkdir script
touch boot.sh
touch install.sh

第三步:
写入脚本代码操作
打开boot.sh

vi boot.sh/boot.sh

写入代码:
注解:
spawn是进入expect环境后才可以执行的expect内部命令。
expect是一种脚本语言,它能够代替我们实现与终端的交互,我们不必再守候在电脑旁边输入密码,或是根据系统的输出再运行相应的命令。
ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。
send()是一个计算机函数,功能是向一个已经连接的socket发送数据

#!/bin/bash

SERVERS="192.168.1.113"   #weijie1中的ip地址
PASSWORD=123456   #weijie1登录密码
BASE_SERVER=192.168.1.112   #weijieip地址


auto_ssh_copy_id(){
        expect -c "set timeout -1;
        spawn ssh-copy-id $1;   
        expect {
                *(yes/no)* {send -- yes\r;exp_continue;} #* *通配含有"*"内的字符串
                *assword:* {send -- $2\r;exp_continue;} #$2表示下面代码中的PASSWORD,引用密码
                eof        {exit 0;}
        }";
}

ssh_copy_id_to_all(){
        for SERVER in $SERVERS #遍历要发送到各个主机的ip
        do
                auto_ssh_copy_id $SERVER $PASSWORD
        done
}
ssh_copy_id_to_all

for SERVER in $SERVERS
do
        scp install.sh  root@$SERVER:/root
        ssh root@$SERVER /root/install.sh

done

配置install.sh脚本文件
打开文件

[root@weijie ~]# vi script/install.sh 

写入下面代码

#!/bin/bash

BASE_SERVER=weijie
wget $BASE_SERVER/soft/jdk-8u161-linux-x64.tar.gz #待发送的文件
tar -zxcf jdk-8u161-linux-x64.tar.gz -C /usr/local #解压到对应的local文件夹目录下
cat >> /etc/profile << EOF #将EOF中的内容追加到profile内容中
export JAVA_HOME=/usr/local/jdk1.8.0_161 #配置环境变量
export PATH=\$PATH:\$JAVA_HOME/bin
~                                        

第四步:
执行脚本文件

sh boot.sh

如果出现如下,说明部署成功
这里写图片描述
然后在wiejie1 root目录中可以看见jdk文件。

Logo

更多推荐