码迷,mamicode.com
首页 > 编程语言 > 详细

Python Tomcat Script(多实例)

时间:2015-12-17 20:49:39      阅读:456      评论:0      收藏:0      [点我收藏+]

标签:

之前书写过 Tomcat 单实例的 Python 脚本,本次增加 Tomcat 多实例的操作脚本.

1:准备

  安装所需 Python 插件
    A方法: pip install argparse

    B方法:1.安装依赖包{setuptools}

       2.安装 argparse

技术分享
#tar xzf setuptools-19.1.1.tar.gz && cd setuptools-19.1.1 && python setup.py install
#tar xzf argparse-1.4.0.tar.gz && cd argparse-1.4.0 && python setup.py install
View Code

 

2.脚本内容

技术分享
  1 #!/usr/bin/env python
  2 # _*_coding:utf-8_*_
  3 # Author "Edward.Liu"
  4 
  5 # Import libary~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  6 import subprocess
  7 import time
  8 import sys
  9 import signal
 10 import os
 11 import argparse
 12 
 13 
 14 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 15 class Tomcat(object):
 16     def __init__(self, tomcat_exe):
 17         self.tomcat_exe = tomcat_exe
 18         self.Tomcat_Home = "/install/%s" % tomcat_exe
 19         self.Tomcat_Log_Home = "/install/%s/logs" % tomcat_exe
 20         self.counnt = 10
 21         self.Tomcat_Examples = [tomcat, tomcat-mobile]
 22 
 23     # Get Tomcat_PID~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 24     def get_tomcat_pid(self):
 25         p = subprocess.Popen([ps, -Ao, pid,command], stdout=subprocess.PIPE)
 26         out, err = p.communicate()
 27         for line in out.splitlines():
 28             if java in line:
 29                 if self.tomcat_exe in line:
 30                     pid = int(line.split(None, 1)[0])
 31                     return pid
 32 
 33     # Start Tomcat Process~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 34     def start_tomcat(self):
 35         if self.get_tomcat_pid() is not None:
 36             print "\033[32m %s Is Started \033[0m" % self.tomcat_exe
 37         else:
 38             # Start Tomcat
 39             command_start_tomcat = "%s/bin/startup.sh" % self.Tomcat_Home
 40             p = subprocess.Popen(command_start_tomcat, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
 41                                  stderr=subprocess.PIPE, shell=True)
 42             stdout, stderr = p.communicate()
 43             print stdout, stderr
 44 
 45     # Stop Tomcat process~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 46     def stop_tomcat(self):
 47         wait_sleep = 0
 48         if self.get_tomcat_pid() is None:
 49             print "\033[32m %s is Not Running\033[0m" % self.tomcat_exe + "~" * 20
 50         else:
 51             command_stop_tomcat = "%s/bin/shutdown.sh" % self.Tomcat_Home
 52             p = subprocess.Popen(command_stop_tomcat, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
 53                                  stderr=subprocess.PIPE, shell=True)
 54             stdout, stderr = p.communicate()
 55             while (self.get_tomcat_pid() is not None):
 56                 print "waiting for processes to exit\n"
 57                 wait_sleep += 1
 58                 time.sleep(1)
 59                 if wait_sleep == self.counnt:
 60                     os.kill(self.get_tomcat_pid(), signal.SIGKILL)
 61                     print "\033[32m Stop Tomcat is sucessful \033[0m"
 62                     break
 63 
 64     # View TomcatLogs~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 65     def tomcat_log(self):
 66         command_tomcat_log = "tail -f %s/catalina.out " % self.Tomcat_Log_Home
 67         p = subprocess.Popen(command_tomcat_log, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
 68         returncode = p.poll()
 69         try:
 70             while returncode is None:
 71                 line = p.stdout.readline()
 72                 returncode = p.poll()
 73                 line = line.strip()
 74                 print line
 75             print returncode
 76         except KeyboardInterrupt:
 77             print ctrl+d or z
 78 
 79 
 80 if __name__ == __main__:
 81     parser = argparse.ArgumentParser(
 82             description="eg: ‘%(prog)s‘ -c tomcat|tomcat-mobile -d {start|stop|status|restart|log}")
 83     # ADD Tomcat Apps ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 84     parser.add_argument(-c, --app_name, nargs=+, dest=choices, choices=(tomcat, tomcat-mobile))
 85     parser.add_argument(-d, --Handle, action=store, nargs=?, dest=handle,
 86                         help=Input One of the {start|stop|status|restart|log})
 87     parser.add_argument(-v, --version, action=version, version=%(prog)s 1.0)
 88     args = parser.parse_args()
 89     if len(sys.argv) <= 4:
 90         parser.print_help()
 91     else:
 92         try:
 93             Handle = Tomcat(args.choices[0])
 94             if args.handle == log:
 95                 Handle.tomcat_log()
 96             elif args.handle == start:
 97                 Handle.start_tomcat()
 98             elif args.handle == stop:
 99                 Handle.stop_tomcat()
100             elif args.handle == restart:
101                 Handle.stop_tomcat()
102                 time.sleep(5)
103                 Handle.start_tomcat()
104             elif args.handle == status:
105                 if Handle.get_tomcat_pid() is not None:
106                     print "\033[32m %s Is Running is PID:\033[0m" % Handle.tomcat_exe + "\033[31m %s \033[0m" % Handle.get_tomcat_pid()
107                 else:
108                     print "\033[32m %s Not Running Or Not Exist \033[0m" % Handle.tomcat_exe
109 
110         except TypeError:
111             parser.print_help()
View Code

 

        

Python Tomcat Script(多实例)

标签:

原文地址:http://www.cnblogs.com/edwardlogs/p/5055112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!