03/ shell编程综合练习

自动化软件部署脚本

3.1 需求

1、需求描述

公司内有一个N个节点的集群,需要统一安装一些软件(jdk)

需要开发一个脚本,实现对集群中的N台节点批量自动下载、安装jdk

2、思路

1/ 编写一个启动脚本,用来发送一个软件安装脚本到每一台机器

2/ 然后启动每台机器上的软件安装脚本来执行软件下载和安装

3、expect的使用

痛点:使用scp命令远程拷贝文件时,会有人机交互的过程,如何让脚本完成人机交互?

妙药: expect

用法示例:

先观察  ssh localhost 的过程

再看expect的功能

#!/bin/bash/expect

## exp_test.sh

set timeout -1;

spawn ssh localhost;

expect {

"(yes/no)" {send "yes\r";exp_continue;}

"password:" {send "hadoop\r";exp_continue;}

eof        {exit 0;}

}

执行:  expect -f exp_test.sh

3.2 准备内网软件下载服务器

选择一台服务器(比如mini)作为软件源服务器

1、安装httpd   (如果已有,可跳过)

yum install -y httpd

service httpd start

chkconfig --level 35 httpd on

2、制作局域网yum源

1/ 挂载centos安装光盘到/mnt/cdrom    (如果已有,可跳过)

mkdir /mnt/cdrom

mount -t iso9660 -o loop /dev/cdrom /mnt/cdrom

2/ 将本地yum库放入httpd服务器

ln -s /mnt/cdrom /var/www/html/centos

检查点:用浏览器访问  http://mini/centos  看能否看到光盘内容

3、编写repo配置

vi /etc/yum.repos.d/centos.repo

[c6-httpd]

name=CentOS-httpd

baseurl=http://192.168.33.3/centos

gpgcheck=0

enabled=1

4、分发repo配置到局域网

从母鸡shizhan01上把centos.repo拷贝给所有需要自动安装软件的服务器(仔鸡mini1/mini2)

cd /etc/yum.repos.d/

scp /etc/yum.repos.d/innet.repo mini1:$PWD

scp /etc/yum.repos.d/innet.repo mini2:$PWD

5、准备一个jdk安装包放在内网web服务器上

3.3 脚本开发

1、启动脚本

vi boot.sh

#!/bin/bash

SERVERS="mini1 mini2"

PASSWORD=hadoop

BASE_SERVER=192.168.33.11

##  实现免密登陆配置的函数

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;}

eof        {exit 0;}

}";

}

ssh_copy_id_to_all() {

for SERVER in $SERVERS

do

auto_ssh_copy_id $SERVER $PASSWORD

done

}

## 调用免密登陆配置函数,实现母鸡到各仔鸡的免密登陆配置

ssh_copy_id_to_all

## 完成分发install.sh到各仔鸡的操作

## 并让仔鸡启动install.sh

for SERVER in $SERVERS

do

scp install.sh root@$SERVER:/root

ssh root@$SERVER /root/install.sh

done

2、安装执行脚本

vi install.sh

#!/bin/bash

BASE_SERVER=192.168.33.11

##  为本机安装wget命令

yum install -y wget

## 使用wget从母鸡的web服务器上下载jdk压缩包

wget $BASE_SERVER/soft/jdk-7u67-linux-x64.gz

## 将下载的压缩包解压

tar -zxvf jdk-7u67-linux-x64.gz -C /usr/local

## 修改profile配置文件

cat >> /etc/profile << EOF

export JAVA_HOME=/usr/local/jdk1.7.0_67

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

EOF

3、启动脚本

只要在baseServer即mini上启动boot.sh即可

大数据学习——shell编程的更多相关文章

  1. 大数据学习day20-----spark03-----RDD编程实战案例(1 计算订单分类成交金额,2 将订单信息关联分类信息,并将这些数据存入Hbase中,3 使用Spark读取日志文件,根据Ip地址,查询地址对应的位置信息

    1 RDD编程实战案例一 数据样例 字段说明: 其中cid中1代表手机,2代表家具,3代表服装 1.1 计算订单分类成交金额 需求:在给定的订单数据,根据订单的分类ID进行聚合,然后管理订单分类名称, ...

  2. 大数据学习——actor编程

    1 概念 Scala中的Actor能够实现并行编程的强大功能,它是基于事件模型的并发机制,Scala是运用消息(message)的发送.接收来实现多线程的.使用Scala能够更容易地实现多线程应用的开 ...

  3. 大数据学习笔记——Hadoop编程实战之HDFS

    HDFS基本API的应用(包含IDEA的基本设置) 在上一篇博客中,本人详细地整理了如何从0搭建一个HA模式下的分布式Hadoop平台,那么,在上一篇的基础上,我们终于可以进行编程实操了,同样,在编程 ...

  4. 大数据学习笔记——Linux完整部署篇(实操部分)

    Linux环境搭建完整操作流程(包含mysql的安装步骤) 从现在开始,就正式进入到大数据学习的前置工作了,即Linux的学习以及安装,作为运行大数据框架的基础环境,Linux操作系统的重要性自然不言 ...

  5. 大数据学习路线,来qun里分享干货,

    一.Linux lucene: 全文检索引擎的架构 solr: 基于lucene的全文搜索服务器,实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面. 推荐一个大数据学习群 ...

  6. 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

    引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...

  7. 大数据学习系列之九---- Hive整合Spark和HBase以及相关测试

    前言 在之前的大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 中介绍了集群的环境搭建,但是在使用hive进行数据查询的时候会非常的慢,因为h ...

  8. 大数据学习:storm流式计算

    Storm是一个分布式的.高容错的实时计算系统.Storm适用的场景: 1.Storm可以用来用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中. 2.由于Storm的处理组件都是分布式的, ...

  9. 大数据学习(一) | 初识 Hadoop

    作者: seriouszyx 首发地址:https://seriouszyx.top/ 代码均可在 Github 上找到(求Star) 最近想要了解一些前沿技术,不能一门心思眼中只有 web,因为我目 ...

随机推荐

  1. Codeforces Round #408 (Div. 2) D

    Description Inzane finally found Zane with a lot of money to spare, so they together decided to esta ...

  2. 1-18String类简介

    字符串(String)的不可变性 String类在java.lang包下面,是Object类的直接子类,通过API或者源码可以看到,String类是final修饰的,这说明String类不能被继承. ...

  3. PHP fgets 函数

    <?php $handle=fopen("../good/html/1.txt","r"); ; //打开一个远程文件 $content="&q ...

  4. 更新项目,uwsgi重新加载和日志文件

    uwsgi --reload /var/run/uwsgi.pid uwsgi.pid是uwsgi进程文件 /var/log/uwsgi.log

  5. ios MD5大小写加密

    #import "NSString+change.h" #import <CommonCrypto/CommonDigest.h> @implementation NS ...

  6. The Performance Manifesto

    Manifesto For Performance Testing And Engineering We choose to support others in their quest for bet ...

  7. 如何在Ubuntu里安装Helm

    Helm是什么?在战网上玩过暗黑破坏神2代的程序员们应该还记得,Helm是国度的意思. 而在计算机领域,Helm是什么? Helm是Kubernetes的一个包管理工具,有点像nodejs的npm,U ...

  8. SEO 第十章

    SEO第十章 本次课目标: 1.  站外优化方案计划 2.  常见的SEO作弊手段(黑帽) 3.  百度站长平台的使用 4.  网站流量提升和转化率提升 一.站外优化方案计划 友情链接 权重相当.行业 ...

  9. Web开发者不容错过的10个HTML5工具

    HTML5已经成为当今世界的一个必然组成部分.由于World Wide Web万维网是使用超文本标记语言来架构和呈现的,于是HTML5成为了最流行的编程语言之一.随着网络的不断扩张,Web开发人员非常 ...

  10. 关于dzzoffice 破解版

    最近看到很多人在搜索dzzoffice破解版,其实dzzoffie是一款全开源的产品,开放的功能是与演示站中一摸一样的,所以并不会有人破解这种全开源的系统.那么为什么会有人搜索这样的关键词呢? 可能大 ...