Shell编程实践之批量安装JDK
实验环境
只有两台机子,一台虚拟机192.168.1.200,另外一台物理机192.168.1.201。
目标
执行一个shell脚本,给这两台机子自动安装jdk。
实验步骤
1.自动设置ssh免密码登录
执行脚本之后,遍历服务器ip,对每一个服务进行如下操作
2.每台服务器自动从数据服务器(http服务器,提供jdk安装包下载)上下载jdk
3.下载jdk后进行解压,并设置环境遍历
关键点
1.设置ssh免密码登录时需要输入密码,这里使用expect来自动输入密码:
auto_ssh_copy_id() {
expect -c "set timeout -1;
spawn ssh-copy-id $; #$1表示传入函数的第一个参数:服务器ip地址
expect {
*(yes/no)* {send -- yes\r;exp_continue;}
*assword:* {send -- $\r;exp_continue;} #服务器登录密码
eof {exit ;}
}";
}
2.登录到服务器上后自动执行脚本:
for SERVER in $SERVERS
do
scp install.sh root@$SERVER:/root
ssh root@$SERVER /root/install.sh
done
3.追加内容到某一个文件
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/local/jdk1..0_45
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
> & >>的区别
1.当文件不存在是> 和>>都可以自动生成文件;
2.如果文件存在,>表示覆盖,>>则是追加
这里使用了重定向来将内容追加打了/etc/profile中。
cat >> /etc/profile 是一个命令,是说要把cat得到的内容追加到后面的文件中,那么cat的是什么内容呢?
1.可以是某个文件,可以在后面指定 例如:cat >> /etc/profile/ a.txt
2.如果后面不指定文件,那cat的输入流默认的就是键盘,可以用ctrl+c或ctrl+d来结束输入:
[root@centos01 tmp]# cat > .txt
a
b
c
^C
[root@centos01 tmp]#
3.可以用另外一个输入流(<或<<)来对接到这个输入流上:多行的输入需要一个开始和结束标识:
[root@centos01 tmp]# cat > .txt <<MARK
> hello
> how are you?
> MARK
[root@centos01 tmp]# cat .txt
hello
how are you?
[root@centos01 tmp]#
boot.sh
#!/bin/bash SERVERS="node-3.itcast.cn node-4.itcast.cn"
PASSWORD=
BASE_SERVER=172.16.203.100 auto_ssh_copy_id() {
expect -c "set timeout -1;
spawn ssh-copy-id $;
expect {
*(yes/no)* {send -- yes\r;exp_continue;}
*assword:* {send -- $\r;exp_continue;}
eof {exit ;}
}";
} 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.sh root@$SERVER:/root
ssh root@$SERVER /root/install.sh
done
install.sh
#!/bin/bash BASE_SERVER=172.16.203.100
yum install -y wget
wget $BASE_SERVER/soft/jdk-7u80-linux-x64.tar.gz
tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/local
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/local/jdk1..0_80
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
安装httpd服务
在192.168.1.200上安装httpd,并准备好jdk文件。
yum -y install httpd
[root@demo ~]# cd /var/www/
[root@demo www]# ll
drwxr-xr-x. root root 10月 : cgi-bin
drwxr-xr-x. root root 12月 : error
drwxr-xr-x. root root 10月 : html
drwxr-xr-x. root root 12月 : icons
[root@demo www]# cd html/
[root@demo html]# mkdir soft
[root@demo html]# ll
drwxr-xr-x. root root 12月 : soft
sftp> put E:/BaiduNetdiskDownload/jdk-7u80-linux-x64.tar.gz
[root@demo ~]# mv jdk-7u80-linux-x64.tar.gz /var/www/html/soft/
Shell编程实践之批量安装JDK的更多相关文章
- centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/index.php <<EOF重定向 shell的变量和函数命名不能有横杠 平台可以用arch命令,获取是i686还是x86_64 curl 下载 第三十九节课
centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/ind ...
- centos环境自动化批量安装jdk软件脚本
自动化安装jdk软件部署脚本 准备工作: 1.在执行脚本的服务器上生成免密码公钥: 安装expect命令 yum install -y expect ssh-keygen 三次回车 2.将jdk-7u ...
- [读书笔记]Linux命令行与shell编程读书笔记04 安装软件,编辑器注意事项
1. debian以及redhat两种主流的linux发行版用的包管理工具 debian的包管理工具是 dpkg 再现安装的是 apt apt的工具主要有 apt-get apt-cache apti ...
- 初识shell编程
1.shell编程之为什么学.怎么学 为什么学shell编程 Linux系统批量管理 提升工作效率,减少重复工作 学好shell编程所需要的基础知识 熟悉使用vim编辑器 熟悉SSH终端 熟练掌握Li ...
- 一、Vim编辑器 二、用户和组管理 三、软件的安装(jdk,mysql) 四、Shell编程
一.Vim编辑器的使用 1. vim编辑器的运行模式 编辑模式:等待用户编辑命令的输入 插入模式:编辑文本内容 命令模式:执行命令 2. 使用 :vim 文件名 3. 查看当前vim编辑器介绍:vim ...
- centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课
centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobacku ...
- 暑假第四周总结(HDFS编程实践,安装HBASE)
本周根据书上以及教程的提示,对HDFS进行了编程实践,将教程所给的代码(判断文件是否存在,创建文件,读取文件)进行了应用,根据视频的讲解,对一些简单的语句有了一定的了解,但还是比较生疏.另外还根据提示 ...
- Linux自动安装JDK的shell脚本
Linux自动安装JDK的shell脚本 A:本脚本运行的机器,Linux B:待安装JDK的机器, Linux 首先在脚本运行的机器A上确定可以ssh无密码登录到待安装jdk的机器B上,然后就可以在 ...
- linux源码安装mysql,shell编程学习,ubuntu
一.mysql安装 以源码安装的方式编译和安装Mysql 5.6. 1.卸载旧版本 rpm -qa | grep mysql 检查是否有旧版本 查询结果:mysql-libs-5.1.73-7.el6 ...
随机推荐
- Python模块:paramiko
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实. 1.下载安装 Wi ...
- C#实现将输入的数自动转换为科学计数法
一朋友写了一个把输入的整型或浮点数转换为科学计数法表示的算法,写好后叫我去帮他看看有没有什么bug之类的没有考虑周全.我还没有细看就已经把我吓到了----整整写了将近三百行代码.我也没说他什么,只是回 ...
- ZooKeeper入门
ZooKeeper简介 ZooKeeper是一个构建在Paxos算法上的高可用的分布式数据管理与系统协调框架,提供了一系列原语集,更上层的应用可以用它来实现同步,配置管理,名称服务,Master选举, ...
- FPGA调试光纤模块
利用FPGA调试光纤接口接口: 由于与项目需要,前段时间调试了光纤接口,记录一些设计经验. 设计中采用FPGA控制光纤模块完成光纤数据的收发,FPGA采用Xilinx公司的Spartan6 LX45T ...
- javaweb-2-Tomcat初步学习与使用
一.Tomcat服务器简介(此点网上官方有详尽的解释,故此不赘述,以学习使用为主) Apache Jakarta的开源项目 JSP/Servlet容器 二.Tomcat的目录结构 三.启动和停止Tom ...
- .NET之RabbitMQ学习笔记(二)-安装
安装 1.安装erlang语言环境 因为rabbitmq是基于erlang进行开发,所以需要安装相应的依赖环境,学习中用到的erlang包下载地址:http://www.erlang.org/down ...
- _1Python简介 安装及版本检测
简介 Python是一种面向对象的解释性计算机程序设计语言,由荷兰人Guido von Rossum于1988年的圣诞节发明,第一个公开发行版于1991年. Python崇尚优美.清晰.简单,是一个优 ...
- EDI数据导入的注意事项&常见异常处理
EXCEL表格注意事项: • 编码是0开头的,格式必须是文本,否则前面请加字母: • 注意全角半角,中文标点英文标点: • 编号文字类开头和结尾不要有空格,姓名中间也不要 ...
- Java 操作 Json
1. 使用Gson构建Json 初始化 JsonObject jsonObject = new JsonObject(); 添加属性 jsonObject.addProperty("name ...
- vuejs(2.0)基础笔记
基本结构 <div id="app"> {{ message }} </div> var app = new Vue({ el: '#wrap', data ...