将一下3个脚本放到一个目录里,做成一个 python 的包即可使用


脚本介绍

操作服务脚本

#!/usr/bin/env python
# _*_coding:utf-8_*_
# Author: "Edward.Liu"
# Author-Email: lonnyliu@126.compile"""process hanlde files incloud1.process statususe request get Url returncode2.process Stopuse psutil kill process3.process startuse subprocess run shell start process4.process loguse process logs5.process restart
"""# Improt Libary
import psutil
from subprocess import PIPE, Popen, STDOUT
import os
import sys
import requests
import datetime# Set vars
process_name = "/software/apache-tomcat-jenkins"
url = "http://172.31.1.230:8080"def process_id():# use process name get process pidprocess_base_str = "-Dcatalina.base=%s" % process_namepid = {}for proc in psutil.process_iter():try:pinfo = proc.as_dict(attrs=['pid', 'name', 'cmdline'])except psutil.NoSuchProcess:passelse:if process_base_str in pinfo.get('cmdline'):pid[process_name] = pinfo.get('pid')return piddef process_judgment():# 判断 URL 的状态码messages = ""try:jenkins_r = requests.get(url, timeout=None)return jenkins_r.status_codeexcept requests.ConnectTimeout:messges = "Timeout"return messgesexcept requests.ConnectionError:messages = "connection"return messagesexcept requests.HTTPError:messages = "httperror"return messageselse:return messagesdef process_status():# judgment process statusif not process_id().get(process_name) is None:if process_judgment() == 200:print "\033[32mProcess %s normal\033[0m" \% process_name.split('/')[2]else:print "\033[31mProcess Dont Access By:%s\033[0m" % url + "\n"\"\033[31mMesages:%s" % process_judgment()else:print "\033[31mProcess %s does not exist" % process_name.split('/')[2]def process_log_info():process_log = "tail -f %s/logs/catalina.out " % process_nameprocess_logs = Popen(process_log, shell=True,stdout=PIPE, stderr=STDOUT)returncode = process_logs.poll()try:while returncode is None:line = process_logs.stdout.readline()returncode = process_logs.poll()line = line.strip()print lineprint returncodeexcept KeyboardInterrupt:print 'ctrl+d or z'def process_kill():# judgment process existif process_id().get(process_name) is None:print "\033[31mProcess %s is Not Started" % process_name.split('/')[2]sys.exit(0)elif not process_id().get(process_name) is None \and process_judgment() != 200:print "\033[31mProcess %s is Started But Process access Failed \Messages:" % (process_name, process_judgment())sys.exit(0)# stop processPROCESSID = process_id().get(process_name)p = psutil.Process(pid=PROCESSID)p.kill()if process_id().get(process_name) is None:print "\033[32mprocess %s stop OK!!!\033[0m" \% process_name.split('/')[2]else:print "\033[31mProcess %s Stop Failed\!!![033[0m" \% process_name.split('/')[2]def process_init():# start processos.environ["JAVA_HOME"] = "/software/java_1.7"start_time = datetime.datetime.now()process_init_command = "%s/bin/startup.sh" % process_namestart = Popen(process_init_command, stdout=PIPE,stderr=PIPE, shell=True)stdout, stderr = start.communicate()print stderrprint "\033[32mWaitting Process %s Start OK !!!\033[0m" \% process_name.split('/')[2]while process_judgment() != 200:passend_time = datetime.datetime.now()print "\033[32mprocess start time(s):%s\033[0m" \% (end_time - start_time).seconds

View Code

操作文件脚本

 1 #!/usr/bin/env python
 2 # _*_coding:utf-8_*_
 3 # Author: "Edward.Liu"
 4 # Author-Email: lonnyliu@126.compile
 5
 6
 7 import os
 8 import zipfile
 9 import datetime
10
11 # set process directory vars
12 DEPLOY_ENV = "mobile"
13 DEPLOY_WAR = "cybershop-%s-0.0.1-SNAPSHOT.war" % DEPLOY_ENV
14 UPLOAD_WAR_DIRECTORY = "/software/source_files"
15 DEPLOY_TMP = "/software/deploy_tmp/"
16 DEPLOY_REALY = "/software/deploy_%s/" % DEPLOY_ENV
17 STATIC_DIRECTORY = "/data/www"
18 PICTURE_DIRECTORY = "/software/picture"
19 # Set process Diectory Vars end
20 # Set Process Used dir
21 Source_Path = "%s/%s" % (UPLOAD_WAR_DIRECTORY, DEPLOY_WAR)
22 now_time = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M")
23 Last_File = "%s%s-%s" % (DEPLOY_TMP, DEPLOY_WAR.split('.war')[0], now_time)
24 # Set process Used End
25
26
27 def process_judgment_dir():
28     # 判断目录是否存在
29     if not os.path.exists(UPLOAD_WAR_DIRECTORY):
30         os.makedirs(UPLOAD_WAR_DIRECTORY)
31     elif not os.path.exists(DEPLOY_TMP):
32         os.makedirs(DEPLOY_TMP)
33     elif not os.path.exists(DEPLOY_REALY):
34         os.makedirs(DEPLOY_REALY)
35     else:
36         print "\033[32mUsed Dir Is exists\033[0m"
37
38
39 def process_source():
40     """
41         1.解压部署文件
42         2.创建图片存放目录
43     """
44     ret = 0
45     # 图片目录创建
46     Last_File_Pic = "%s/assets" % Last_File
47     if not os.path.exists(Last_File):
48         # 创建程序目录
49         os.makedirs(Last_File)
50         # 创建图片目录
51         os.makedirs(Last_File_Pic)
52         try:
53             zip_ref = zipfile.ZipFile(Source_Path, 'r')
54             zip_ref.extractall(Last_File)
55             zip_ref.close()
56             ret = 1
57             return ret
58         except IOError:
59             print "\033[31m%s Is Not Exists Please send Files\033[0m" \
60                 % DEPLOY_WAR.split('.war')[0]
61         return ret
62
63
64 def process_link():
65     if process_source() == 1:
66         # 创建项目启动所需链接
67         dest_pic = "%s/assets/upload" % Last_File
68         dest_static = "%s/www" % Last_File
69         os.symlink(PICTURE_DIRECTORY, dest_pic)
70         os.symlink(STATIC_DIRECTORY, dest_static)
71         # 创建项目启动所需链接----END
72         # 创建启动程序链接
73         dest_deploy_path = "%s%s" % (DEPLOY_REALY, DEPLOY_WAR.split('.war')[0])
74         os.symlink(Last_File, dest_deploy_path)
75         if os.path.islink(dest_deploy_path):
76             print "\033[32mCrate Link Process Is Scueeful\033[0m"
77         # 创建启动程序链接----END

View Code

整合脚本

#!/usr/bin/env python
# _*_coding:utf-8_*_
# Author: "Edward.Liu"
# Author-Email: lonnyliu@126.compileimport handle_files
import handle_process
import argparse
import sys
import time
import datetimedef check_arg(args=None):parser = argparse.ArgumentParser(description="EG: '%(prog)s'  -p start|stop")parser.add_argument('-p', '--process', default='log',help='Input One of the {start|stop|status|log}')parser.add_argument('-v', '--version', action='version',version='%(prog)s 1.1')if len(sys.argv) == 1:parser.print_help()sys.exit(1)return parser.parse_args(args)def main():args = check_arg(sys.argv[1:])if args.process == "start":handle_process.process_init()elif args.process == "stop":handle_process.process_kill()elif args.process == "status":handle_process.process_status()elif args.process == "log":handle_process.process_log_info()elif args.process == "restart":handle_process.process_kill()time.sleep(10)handle_process.process_init()elif args.process == "deploy":handle_files.process_judgment_dir()print "\033[32mWaitting Unzip project\033[0m" + "." * 10start_time = datetime.datetime.now()handle_files.process_source()end_time = datetime.datetime.now()print "\033[32mPorject Unzip End-time(s):%s\033[0m" \% (end_time - start_time).secondshandle_process.process_kill()handle_files.process_link()handle_process.process_init()if __name__ == '__main__':main()

View Code

转载于:https://www.cnblogs.com/edwardlogs/p/Tomcat-Process-Deploy.html

tomcat 部署脚本相关推荐

  1. Tomcat:第五章:Tomcat 部署脚本编写

    我们平时启动 Tomcat 过程是怎么样的? 复制WAR包至Tomcat webapp 目录. 执行starut.bat 脚本启动. 启动过程中war 包会被自动解压装载. 但是我们在 Eclipse ...

  2. [svc]jdk+tomcat部署.jforum论坛部署

    安装jdk和tomcat jdk1.7.0_13(系列)下载url 我这里用的最新的jdk. 去官网下载即可 cd /usr/local/src/ tar xf jdk-8u162-linux-x64 ...

  3. 分享一例脚本发版和tomcat重启脚本

    线上有个网站业务部署在tomcat上,由于频繁上线修改,需要经常启动tomcat. tomcat服务自带的bin下没有重启脚本,下面分享一例脚本发版和tomcat重启脚本: 1)现将业务代码从svn里 ...

  4. linux安装tomcat_【零基础学云计算】详述Linux系统中Tomcat部署及优化

    Tomcat介绍 免费的.开放源代码的Web应用服务器 Apache软件基金会(Apache Software Foundation)Jakarta项目中的一个核心项目 由Apache.Sun和一些公 ...

  5. Tomcat部署及优化

    Tomcat部署及优化 [前言] 一.Tomcat概述 1.1 Tomcat介绍 1.2 Tomcat三个核心组件 1.3 Tomcat两个功能组件 Container容器 1.4 Java Serv ...

  6. Tomcat是干嘛用的?企业级Tomcat部署实践及安全调优

    1.1 Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人 ...

  7. Tomcat部署步骤

    Tomcat部署步骤 一.将需要配置的软件包上传到服务器上,配置Java环境 1 ll 2 tar zxf jdk-8u91-linux-x64.tar.gz -C /opt 3 mv /opt/jd ...

  8. Tomcat部署与优化

    目录 一.Tomcat简介 1.什么是Tomcat 2.Tomcat核心组件 3.Tomcat处理请求 4.小结 二.部署Tomcat 1.环境部署--JDK 2.安装启动Tomcat 3.tomca ...

  9. 理论+实操:tomcat部署及优化————理论讲解

    前言: tomcat安装部署 虚拟主机配置 tomcat优化 下载网站: http://tomcat.apache.org/ 一:Tomcat介绍 免费的.开放源代码的Web应用服务器 Apache软 ...

最新文章

  1. 关于安徽赛区推广校赛的实施办法
  2. 1077: 字符串加密
  3. C语言中函数参数传递
  4. 使用Jest测试JavaScript (入门篇)
  5. Android控件之ConstraintLayout详解
  6. 大文件下载及视频点播的CDN加速实践
  7. 云计算与 OpenStack - 每天5分钟玩转 OpenStack(14)
  8. 《视图更新与关系数据库理论》——2.1 关系和关系变量
  9. Python面试题解答——第一部分
  10. 一个简单的BP神经网络matlab程序(附函数详解)
  11. 【codevs1004】四子连棋
  12. 使用ResultReceiver的Android IntentService
  13. 正则表达式~~检索匹配的利器
  14. Centos操作系统
  15. R语言3.6.3安装教程
  16. 网络安全应急响应实施过程
  17. cocos2d-x中setcolor中的rgb颜色值设置
  18. Mountainous landscape
  19. 【CozeTalk】如何衡量你的人生-人生修炼手册-克莱顿·克里斯坦森
  20. python print怎么用_Python学习路线分享Beeprint怎么用

热门文章

  1. bashrc文件中环境变量配置错误,导致linux命令无法正常使用的解决方案
  2. 【Android】Android中屏蔽返回键,home键以及其他实体按键
  3. ccfb类会议有哪些_CCF 计算机会议排名
  4. CentOS修改MySql数据库目录datadir
  5. Windows各种提权漏洞对应的补丁号
  6. 【代码规范】google开源c\c++项目代码规范
  7. 常用七大经典排序算法总结(C语言描述)
  8. 静态分配和动态分配内存的区别
  9. 并查集 - 交换字符串中的元素
  10. c++ primer5th,习题12.24