要求: 编写自动化脚本,在所有机器上安装jdk。其中一台机器作为拥有jdk的yum仓库服务器,其他的机器都要从该yum服务器中下载jdk并安装。
自动化脚本分为两个文件,boot.sh和install.sh。
boot.sh:运行在提供yum仓库的机器上,它会配置本机器到其余机器的免密ssh登录,然后发送install.sh脚本到各台机器上,并在其他机器上启动install.sh脚本。
install.sh:首先用yum安装wget(yum install -y wget),然后从httpd服务器上下载jdk(wget http://mini4/soft/jdk.tar.gz),最后解压和修改配置文件
前提:每台机器都要有scp命令
脚本的详细代码:
boot.sh:
BASE_SERVER=172.16.203.100
//配置ssh免密登录
auto_ssh_copy_id() {
expect -c "set timeout -1;
spawn ssh-copy-id $1; # 执行命令
expect {
*(yes/no)* {send -- yes
;exp_continue;} # 如果系统提示带有yes/no,就输入yes然后回车
*assword:* {send -- $2
;exp_continue;} # 如果系统提示带有assword,就输入PASSWORD然后回车
eof {exit 0;} # 不再提示,就退出
}";
}
# set timeout -1; : 无限制地等待系统的响应提示,不会超时
ssh_copy_id_to_all() {
for SERVER in $SERVERS
do
auto_ssh_copy_id $SERVER $PASSWORD
# 调用auto_ssh_copy_id函数,传入两个参数SERVER和PASSWORD
done
}
ssh_copy_id_to_all
for SERVER in $SERVERS
do
scp install.sh root@$SERVER:/root # 发送install.sh脚本给其他机器
ssh root@$SERVER /root/install.sh # 在其他机器上启动脚本
done
install.sh:
#!/bin/bash
BASE_SERVER=mini4 # 提供yum仓库的机器
yum install -y wget # 安装wget
wget $BASE_SERVER/soft/jdk-7u45-linux-x64.tar.gz # 下载jdk
tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/local # 解压
cat >> /etc/profile << EOF # 修改配置文件
export JAVA_HOME=/usr/local/jdk1.7.0_45
export PATH=$PATH:$JAVA_HOME/bin
EOF
# cat 文件EOF...EOF,追加到/etc/profile文件里去
# >>输出重定向 <<输入重定向
详细操作步骤:
cd /var/www/html/
mkdir soft
cp ~/jdk-7u45-linux-x64.tar.gz ./soft/
chmod +x install.sh boot.sh # 添加可执行权限
./boot.sh