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

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. 原生js获取鼠标坐标方法全面讲解-zmq

    原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y 一.关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种:eve ...

  2. python走起之第十四话

    HTML 标题 HTML 标题(Heading)是通过<h1> - <h6> 标签来定义的. 实例 <h1>这是一个标题</h1> <h2> ...

  3. CSS 文字两端对齐

    <!DOCTYPE HTML> <html> <head> <title></title> <meta http-equiv=&quo ...

  4. js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

    html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...

  5. python 03

    数据结构 在 python 中有4种内建数据结构, 列表, 元组, 字典和集合. 列表 list 有序项目的数据结构, 类似数组, 是对象. 列表用中括号中用逗号分隔的项目定义.例如 ['apple' ...

  6. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

  7. 在web.xml注册applicationContext.xml配置文件

    概要: Spring配置文件是集成了Spring框架的项目的核心,引擎的开始是:容器先是加载web.xml,接着是applicationContext.xml在web.xml里的注册.以下我们将介绍a ...

  8. iOS开发 跳转系统设置

    NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; [[UIApplication sharedApplica ...

  9. C语言课程学习的总结

    C语言课程学习的总结 学习C程序这门课一年了,这是我们学的第一门专业课.在大学里,C语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程.所以作为我这个计算机专业的学生来说当 ...

  10. jmeter for循环嵌套if学习2

    if语句中勾选Evaluate选项,每执行一句都会判断result的值是否为true. 执行结果: three没有执行,到debug时变量的值变成tom了