互联网服务有很多台服务,但是在上线的时候需要将这些服务版本都更新与个个都重启,下面的脚本语言,就是一键发布服务~

1.在/home/weihu/deploy/ 目录下建下publish 、publish下建下bak、bin、cfg、rel文件夹(其中bak为备份、bin为自己写的脚本语言目录、cfg为生产环境的配置文件、rel每次版本发布)

2.安装expect脚本 查看是否已经安装 whereis expect

3.工程版本中,生产配置文件往往是很少变的,但是自己打的版本可能是在开发环境可能和生产环境配置不同。这样你整理下生产环境中不能改变的配置文件放在配置文件中

具体的脚本代码

start_all_XX_service.sh

#!/bin/bash
/home/weihu/bin/startWeblogic_9011.sh &&
/home/weihu/bin/startWeblogic_9012.sh &&
/home/weihu/bin/startWeblogic_9013.sh &&
/home/weihu/bin/startWeblogic_9014.sh && 
/home/weihu/bin/startWeblogic_9015.sh

stop_all_XX_service.sh

#!/bin/bash

/home/weihu/bin/stopWeblogic_9011.sh &&
/home/weihu/bin/stopWeblogic_9012.sh &&
/home/weihu/bin/stopWeblogic_9013.sh &&
/home/weihu/bin/stopWeblogic_9014.sh &&
/home/weihu/bin/stopWeblogic_9015.sh

一键发布脚本

rdr.sh

#!/bin/bash
/home/weihu/bin/startWeblogic_9011.sh &&
/home/weihu/bin/startWeblogic_9012.sh &&
/home/weihu/bin/startWeblogic_9013.sh &&
/home/weihu/bin/startWeblogic_9014.sh && 
/home/weihu/bin/startWeblogic_9015.sh
[jizhiping@ececp6 bin]$ more stop_all_openapi_service.sh
#!/bin/bash
/home/weihu/bin/stopWeblogic_9011.sh &&
/home/weihu/bin/stopWeblogic_9012.sh &&
/home/weihu/bin/stopWeblogic_9013.sh &&
/home/weihu/bin/stopWeblogic_9014.sh &&
/home/weihu/bin/stopWeblogic_9015.sh
[jizhiping@ececp6 bin]$ more rdr.sh
#!/bin/sh
echo "--------------------begin delete the version and  unzip the basic of openapi.zip --------------------"
mv /home/weihu/deploy/publish/rel/openapi  /home/weihu/deploy/publish/bak/openapi_`date +%Y%m%d%H%M%S`
unzip /home/weihu/deploy/publish/rel/openapi.zip -d /home/weihu/deploy/publish/rel/
echo "--------------------end delete the version and unzip the basic of openapi.zip --------------------"
sleep 1

for i in $(seq 5); do
let port=9010+$i
echo ""
echo "--------------------start deploy openapi to 10.173.23.54:$port--------------------"
expect <<!
spawn ssh -l jizhiping 10.173.23.54 "rm -rf /home/weihu/deploy/deploy$port/openapi"
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

spawn scp -rpq /home/weihu/deploy/publish/rel/openapi jizhiping@10.173.23.54:/home/weihu/deploy/deploy$port
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

spawn scp -rpq /home/weihu/deploy/publish/cfg/config.properties jizhiping@10.173.23.54:/home/weihu/deploy/deploy$port/openapi/WEB-INF/classes/
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

spawn scp -rpq /home/weihu/deploy/publish/cfg/datasource.properties jizhiping@10.173.23.54:/home/weihu/deploy/deploy$port/openapi/WEB-INF/classes/
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

spawn scp -rpq /home/weihu/deploy/publish/cfg/jtcfg.properties jizhiping@10.173.23.54:/home/weihu/deploy/deploy$port/openapi/WEB-INF/classes/
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

spawn scp -rpq /home/weihu/deploy/publish/cfg/syscfg.properties jizhiping@10.173.23.54:/home/weihu/deploy/deploy$port/openapi/WEB-INF/classes/
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

spawn scp -rpq /home/weihu/deploy/publish/cfg/applicationContext-dubbo.xml jizhiping@10.173.23.54:/home/weihu/deploy/deploy$port/openapi/WEB-INF/classes/app
lication/base/
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

!
done;

sleep 3

echo ""
echo "--------------------start unzip the basic of openapi.zip to 55--------------------"

for i in $(seq 5); do
let port=9010+$i
echo ""
echo "--------------------start deploy openapi to 10.173.23.55:$port--------------------"
expect <<!
spawn ssh -l jizhiping 10.173.23.55 "rm -rf /home/weihu/deploy/deploy$port/openapi"
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

spawn scp -rpq /home/weihu/deploy/publish/rel/openapi jizhiping@10.173.23.55:/home/weihu/deploy/deploy$port
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

spawn scp -rpq /home/weihu/deploy/publish/cfg/config.properties jizhiping@10.173.23.55:/home/weihu/deploy/deploy$port/openapi/WEB-INF/classes/
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

spawn scp -rpq /home/weihu/deploy/publish/cfg/datasource.properties jizhiping@10.173.23.55:/home/weihu/deploy/deploy$port/openapi/WEB-INF/classes/
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

spawn scp -rpq /home/weihu/deploy/publish/cfg/jtcfg.properties jizhiping@10.173.23.55:/home/weihu/deploy/deploy$port/openapi/WEB-INF/classes/
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

spawn scp -rpq /home/weihu/deploy/publish/cfg/syscfg.properties jizhiping@10.173.23.55:/home/weihu/deploy/deploy$port/openapi/WEB-INF/classes/
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

spawn scp -rpq /home/weihu/deploy/publish/cfg/applicationContext-dubbo.xml jizhiping@10.173.23.55:/home/weihu/deploy/deploy$port/openapi/WEB-INF/classes/app
lication/base/
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof

!
done;

sleep 3

echo ""
echo "--------------------begin restart openapi server from 10.173.23.54--------------------"
expect <<!
spawn ssh -l jizhiping 10.173.23.54 "/home/weihu/deploy/publish/bin/restart_all_openapi_service.sh"
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof
!

sleep 3

echo ""
echo "--------------------begin restart openapi server from 10.173.23.55--------------------"
expect <<!
spawn ssh -l jizhiping 10.173.23.55 "/home/weihu/deploy/publish/bin/restart_all_openapi_service.sh"
set timeout 300
expect "*password:"
send "jizhiping_2015\r"
expect eof
!

echo "--------------------deploy and restart for 54 and 55 is successful--------------------"

使用expect脚本语言写一键发布服务(代码发布、所有服务重启)的更多相关文章

  1. Linux 下 expect 脚本语言中交互处理常用命令

    Linux 下 expect 脚本语言中交互处理常用命令 1. #!/usr/bin/expect 告诉操作系统脚本里的代码使用那一个 shell 来执行.这里的 expect 其实和 Linux 下 ...

  2. expect脚本语言用法示例

    #!/usr/bin/expect set hostname [lindex $argv 0] set username [lindex $argv 1] set passwd [lindex $ar ...

  3. 用matlab脚本语言写M文件函数时用三种方法简单实现实现DFT(离散傅里叶变换)

    %用二重循环实现DFT: function xk=dt_0(xn); %define a function N=length(xn); %caculate the length of the vari ...

  4. (五)Lua脚本语言入门

    ---恢复内容开始--- 写完这篇Lua脚本语言入门,自己就要尝试去用Lua脚本语言写esp8266了,,自己现在挺心急的,因为朋友使用esp8266本来说自己帮忙写好程序的,但是用的单片机不一样自己 ...

  5. Unity3d中如何混用三种脚本语言?

    首先要明白,这三种说的混用是指文件级别的混用,就是说一个文件是由一种语言写的.而不是说你这一个文件可以混用这三种语言,注意这是不允许的. 第二要明白,在unity3d中为什么可以使用三种语言混合开发? ...

  6. jenkins配置记录(2)--代码发布流程

    在我们的日常运维工作中,使用jenkins来完成业务代码发版上线是至关重要的一环.前面已经提到在jenkins上添加用户权限的操作,今天重点说下如何在jenkins下构建项目工程进行代码发布? 在此简 ...

  7. jenkins自动发布java代码

    注:本文来源于<KaliArch> jenkins笔记 一.相关概念 1.1 Jenkins概念: Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台. ...

  8. WCF服务自我寄宿 Windows服务

    WCF寄宿有自我寄宿跟IIS寄宿 服务代码: [ServiceContract] ---服务契约 public interface ICustomerService { [OperationContr ...

  9. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情7. 安装 PHP PHP 是用于 web 基础服务的服务器端脚本语言。它也经常被用作通用编程语言。在最小化安装的 CentOS 中安

    CentOS 是一个工业标准的 Linux 发行版,是红帽企业版 Linux 的衍生版本.你安装完后马上就可以使用,但是为了更好地使用你的系统,你需要进行一些升级.安装新的软件包.配置特定服务和应用程 ...

随机推荐

  1. HashMap原理与优化

    参考文献: HashMap的工作原理 java中HashMap重要性质和优化总结 一.HashMap的基本了解 基本定义:根据源代码的描述可知,HashMap是基于哈希表的Map接口的实现,其包含了M ...

  2. Javascript学习笔记:3种定义函数的方式

    ①使用函数声明语法定义函数 function sum(num1,num2){ return num1+num2; } ②使用函数表达式定义函数 var sum=function(num1,num2){ ...

  3. c# 无法加载 DLL xxxxxxxx找不到指定的模块。 (异常来自HRESULT:0x8007007E)。的一个解决方法

    最近在做一个程序,想把某些功能用C++写成DLL供C#调用.但是无法如何都无法调用,提示"无法加载 DLL xxxxxxxx找不到指定的模块. (异常来自HRESULT:0x8007007E ...

  4. Ubuntu 16.04安装搜狗输入法

    转载: http://www.it610.com/article/5319575.htm 打开firefox浏览器,输入网址www.baidu.com,打开后搜索搜狗拼音 linux进入到搜狗拼音li ...

  5. Linux-设置固定IP

    第一步:激活网卡 系统装好后默认的网卡是eth0,用下面的命令将这块网卡激活. # ifconfig eth0 up 第二步:设置网卡进入系统时启动 想要每次开机就可以自动获取IP地址上网,就要设置网 ...

  6. OpenLayers图形与列表互动

    项目上遇到这样一种需求:查询数据库后得到结果(带地理位置的)列表,每个结果在地图上都是一个四边形,四边形之间有交叉,有重叠,需要实现地图上的四边形和结果列表的互动.抛开其他逻辑功能,互动需求可以表示为 ...

  7. CSS垂直居中的方法

    前端开发过程中,水平垂直居中是比较常用的.下面直接开门见山,看看不同方法实现垂直居中的各自优点和其不足之处. 1.将“line-height”和“height”设置成一致 这种方法用来实现单行垂直居中 ...

  8. HTML5 十大新特性(五)——SVG绘图

    相对于canvas绘图,SVG是一种绘制矢量图的技术.全称叫做Scalable Vector Graphics,可缩放的矢量图,在2000年就已经存在,H5把它纳入了标准标签库,并进行了一些瘦身.需要 ...

  9. Android Studio安装和配置(个人研究,有错请指导)

    安装Android Studio的原因:公司有app开发者,然而公司没有测试,只好互相测试,本人并没有接触过app开发,纯小白: 自己试着安装了一下Android Studio来这里记录并分享遇到的问 ...

  10. Attendance

    1.打怪 福利好美味(色.... 努力是为了,遇到你时,可以不用因为种种而错过. 一公司的老板对一位职员说:“我出10万买你的老婆,你卖吗?” 职员微笑着说:“那我出15万买你老婆,你同意吗?” 老板 ...