zoukankan      html  css  js  c++  java
  • 自动化软件部署的shell脚本

    在实际项目中,我们经常用到需要自动化部署软件的情况,这种情况下,我们就不能人为地在命令行下敲击命令了,一切都需要通过shell脚本自动化完成。所谓自动化完成,其实也就是通过写shell程序,模拟人为敲击linux指令,这样一来,所有的指令一气呵成,方便自动化部署。

    我们以一个简单的例子进行说明:

    需求:通过一台服务器向其他多台服务器安装jdk,期间自动配置ssh免登录,并且其他多台服务器下载该台服务器上面的jdk,下载完成后,解压并进行环境变量的配置。

    代码:

    boot.sh:

    #!/bin/bash
    
    SERVERS="weekend02 weekend03"
    PASSWORD=hadoop
    BASE_SERVER=weekend01
    
    auto_ssh_copy_id() {
        expect -c "set timeout -1;
            spawn ssh-copy-id $1;
            expect {
                *(yes/no)* {send -- yes
    ;exp_continue;}
                *assword:* {send -- $2
    ;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
    
    
    for SERVER in $SERVERS
    do
        scp install.sh root@$SERVER:/root
        ssh root@$SERVER /root/install.sh
    done

    以上这段shell脚本,首先在weekend01上向weekend02和weekend03进行ssh免登录,然后将install.sh文件发送过去,并且运行该文件进行安装。

    install.sh:

    #!/bin/bash
    
    BASE_SERVER=weekend01
    yum install -y wget
    wget $BASE_SERVER/soft/jdk-7u45-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.7.0_45
    export PATH=$PATH:$JAVA_HOME/bin
    EOF

    以上这段脚本,进行下载、解压并且配置环境变量的功能。

  • 相关阅读:
    linux [Fedora] 下的 "飞秋/飞鸽传书"
    弹跳是不是自由落体?
    插件的简单原理
    WebService的简单应用
    普通按钮的另一种提交方式(调用后台事件)
    ASPNET服务端控件练习(一个机试题)
    AJAX简单的数据增删改与分页应用
    new XMLHttpRequest()和页面关系
    c++中placement new
    netty的引用计数
  • 原文地址:https://www.cnblogs.com/DarrenChan/p/6687228.html
Copyright © 2011-2022 走看看