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并更新的相关操作。

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

  • 相关阅读:
    OSI安全体系结构
    PHP 二维数组根据相同的值进行合并
    Java实现 LeetCode 17 电话号码的字母组合
    Java实现 LeetCode 16 最接近的三数之和
    Java实现 LeetCode 16 最接近的三数之和
    Java实现 LeetCode 16 最接近的三数之和
    Java实现 LeetCode 15 三数之和
    Java实现 LeetCode 15 三数之和
    Java实现 LeetCode 15 三数之和
    Java实现 LeetCode 14 最长公共前缀
  • 原文地址:https://www.cnblogs.com/dnjiang/p/12931928.html
Copyright © 2011-2022 走看看