zoukankan      html  css  js  c++  java
  • 实现将机器A上的程序包复制到机器B并更新的脚本

    一、前言

    之前有写过如何在单台服务器上执行脚本自动更新程序包,但平时测试过程中相信大部分公司都是需要测试人员在服务器A上进行功能测试,测试通过后再将程序包更新到服务器B上进行安全测试或者性能测试;今天这篇文章将讲解如何将服务器A的程序包复制到服务器B,并远程登录到服务器B上执行相关脚本更新程序。

    二、思路

    服务器A上选择要更新的系统-->选择系统下要更新的程序并复制-->远程登录到服务器B-->服务器B上执行更新程序脚本。

    三、编写相关脚本

    1、服务器A上选择要更新的系统

    在服务器A家目录下编写对应脚本,如图:

    #!/bin/bash
    echo -e "033[33m 请选择要更新的系统 33[0m" 
    echo -e "33[33m 1.sp       2.blsp      3.yjs      33[0m" 
    echo -e "33[33m 4.tysb     5.ckyth     6.zt        33[0m" 
    echo -e "33[33m ------------------------------------------- 33[0m" 
    read type
    if [ $type == 1 ] ; then
        cd 248_deploy
        ./sp.sh
    elif [ $type == 2 ] ; then
        cd 248_deploy
        ./blsp.sh
    elif [ $type == 3 ] ; then
        cd 248_deploy
        ./yjs.sh
    elif [ $type == 4 ] ; then
        cd 248_deploy
        ./tysb.sh
    elif [ $type == 5 ] ; then
        cd 248_deploy
        ./ckyth.sh
    elif [ $type == 6 ] ; then
        cd 248_deploy
        ./zt.sh
    else 
        echo "您的输入有误,请正确输入"
    fi

    2、选择某一系统要更新的程序并复制

    在服务器家目录下新增一个文件夹(例子中为:248_deploy),文件夹中存放上个脚本中用到的各个系统的选择更新程序的脚本(例子中的sp.sh、yjs.sh等),如图:

     上个脚本中假如选择“1”,则接下来会执行sp.sh脚本,具体如下:

    #!/bin/bash
    warpath_133=/u01/weblogic/Middleware/user_projects/domains/base_domain/servers/AdminServer/upload
    warpath_248=/u01/weblogic/Middleware/user_projects/domains/webapp/
    echo -e "033[33m 请选择要更新的包 33[0m" 
    echo -e "33[33m 1.ApprB     2.ApprSu    3.ApprC     4.ApprSy 33[0m" 
    echo -e "33[33m ------------------------------------------- 33[0m" 
    read war
    echo "$warpath_133"
    if [ $war == 1 ] ; then
        war_name="ApprB"
    elif [ $war == 2 ] ; then
        war_name="ApprSu"
    elif [ $war == 3 ] ; then
        war_name="ApprC"
    elif [ $war == 4 ] ; then
        war_name="ApprSy"
    else 
        echo "您的输入有误,请正确输入"
    fi
    echo -e "033[32m 开始复制$war_name 33[0m"
    scp -r $warpath_133/$war_name/app/$war_name.war weblogic@19.1.0.248:$warpath_248
    echo -e "33[32m 开始远程248更新$war_name 33[0m"
    /usr/bin/expect ./ssh/ssh248.exp

    3、远程登录服务器B执行更新程序脚本

    在上个脚本中可以看到,最后一行执行了ssh文件夹下的ssh248.exp实现了远程登录服务器,因此需要在上个脚本的当前目录(例子中为248_deploy)下新增一个文件夹(SSH)并在文件夹下编写对应脚本(ssh248.exp)

    #!/usr/bin/expect
    set timeout 300
    set host "19.1.0.248"
    set username "weblog"
    set password "weblog"
    
    spawn ssh $username@$host
    #expect "*password*" 
    #send "${password}
    "
    expect "*]$*"
    send "sh deploy.sh
    "
    expect "*]$*"
    send "exit
    "
    expect eof

    4、服务器B上执行更新程序脚本

    在服务器B家目录下编写上个脚本中用到的对应脚本(例子中的deploy.sh)

    #!/bin/bash
    jdkpath=/u01/jdk1.8.0_11
    weblogicpath=/u01/weblogic/Middleware/wlserver_10.3
    export CLASSPATH=$jdkpath/lib/tools.jar:$weblogicpath/server/lib/weblogic_sp.jar:$weblogicpath/server/lib/weblogic.jar:$weblogicpath/server/lib/webservices.ja$weblogicpath/../oracle_common/modules/net.sf.antcontrib_1.1.0.0_1-0b2/lib/ant-contrib.jar:$weblogicpath/modules/features/oracle.wls.common.nodemanager_1.0.0.
    
    
    # 获取目录下日期最新的war包
    war=`ls /u01/weblogic/Middleware/user_projects/domains/webapp -t |head -n 1`
    echo -e "033[32m ${war%.*}开始更新 33[0m"
    java weblogic.Deployer -adminurl t3://19.1.0.248:7001 -user weblogic -password weblogic123 -name ${war%.*} -targets AdminServer -redeploy
    echo -e "33[32m ${war%.*}更新完成 33[0m"

    以上完成从机器A将程序包复制到机器B并更新的相关操作。

    上面的例子中对应程序包是通过控制台进行更新,如果程序为前端包或者微服务接口也大同小异,脚本中做一些变更即可。

  • 相关阅读:
    张五常:思考的方法
    David Foster Wallace on Life and Work
    SQL SERVER SQL Agent服务使用小结
    js大全
    中国载人航天工程七大系统
    vc 编译遇到问题
    学习Excel技巧
    使用Request.ServerVariables获取环境变量
    c# 字符常用函数
    SQL数据同步
  • 原文地址:https://www.cnblogs.com/dnjiang/p/12931928.html
Copyright © 2011-2022 走看看