自动化安装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