Tomcat Script(python)
由于刚接触 Python,所以使用Python 书写一些小的脚本,进行备忘同时分享给大家
#!/usr/bin/env python
# _*_coding:utf-8_*_
# author: 'lonny'
# dateTime: '15/11/26'
# motto: 'Good memory as bad written' import subprocess
import time, sys
import platform
import psutil class Tomcat(object):
def __init__(self, Tomcat_Home, Tomcat_Log_Home, counnt=10):
self.Tomcat_Home = Tomcat_Home
self.Tomcat_Log_Home = Tomcat_Log_Home
self.counnt = counnt def system_info(self):
system_type = platform.system()
system_version = platform.linux_distribution()
system_bit = platform.architecture()
Boot_Start = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(psutil.boot_time()))
Host_Memory = psutil.virtual_memory().total / 1024
Can_Use = psutil.virtual_memory().available / 1024
ipaddress = str(psutil.net_if_addrs()['eth0'][0])
processors = psutil.cpu_count(logical=False) print "||||||||||" + "\033[32m本机IP地址--->Eth0:" + "\033[31m %s\033[0m" % ipaddress.split(',')[1]
print "||||||||||" + "\033[32m系统信息:\033[0m" + "\033[31m%s %s-%s %s\033[0m" % (
system_type, system_version[0], system_version[1], system_bit[0])
print "||||||||||" + "\033[32m本机启动时间:\033[0m" + "\033[31m%s\033[0m" % Boot_Start
print "||||||||||" + "\033[32m本机总内存:\033[0m" + "\033[31m %sKB\033[0m" % Host_Memory + "\033[31m ---->%sMB \033[0m" % (
Host_Memory / 1024)
print "||||||||||" + "\033[32m本机可使用内存:\033[0m" + "\033[31m%sKB\033[0m" % Can_Use + "\033[31m ---->%sMB \033[0m" % (
Can_Use / 1024)
print "||||||||||" + "\033[32m本机cpu合数:\033[0m" + "\033[31m %s \033[0m" % processors def get_tomcat_pid(self):
commandcheckoutpid = "ps aux | grep java | grep -v grep | grep 'jenkins_tomcat' | awk '{print $2}'"
p = subprocess.Popen(commandcheckoutpid, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell=True)
stdout, stderr = p.communicate()
# print "\033[32m Jenkins Is Starting \033[0m" + "\033[31mPID:%s\033[0m" % stdout
return stdout def start_tomcat(self):
if len(self.get_tomcat_pid().strip()) != 0:
print "\033[32m Tomcat Is Started \033[0m"
else:
# Start Tomcat
command_start_tomcat = "%s/bin/startup.sh" % self.Tomcat_Home
p = subprocess.Popen(command_start_tomcat, stdin=subprocess.PIPE, stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell=True)
stdout, stderr = p.communicate()
print stdout def stop_tomcat(self):
wait_sleep = 0
if len(self.get_tomcat_pid().strip()) == 0:
print "\033[32m Tomcat is Not Running \033[0m"
else:
command_stop_tomcat = "%s/bin/shutdown.sh" % self.Tomcat_Home
p = subprocess.Popen(command_stop_tomcat, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell=True)
stdout, stderr = p.communicate()
while (len(self.get_tomcat_pid().strip()) != 0):
print "\nwaiting for processes to exit"
wait_sleep += 1
time.sleep(1)
if wait_sleep == self.counnt:
command_Kill_tomcat = "kill -9 %s" % int(self.get_tomcat_pid().strip())
p = subprocess.Popen(command_Kill_tomcat, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell=True)
stdout, stderr = p.communicate()
print "\033[32m Stop Tomcat is sucessful \033[0m"
break def useage(self):
scrip_name = "jenkins.py"
print "\033[32m script use \033[0m" + "./" + scrip_name + "\033[31m start|stop|restart|status\033[0m"
print "or"
print "\033[32m Script use \033[0m" + "python <path>/" + scrip_name + "\033[31m start|stop|restart|status\033[0m" def tomcat_log(self):
command_tomcat_log = "tail -f %s/catalina.out " % self.Tomcat_Log_Home
p = subprocess.Popen(command_tomcat_log, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
returncode = p.poll()
try:
while returncode is None:
line = p.stdout.readline()
returncode = p.poll()
line = line.strip()
print line
print returncode
except KeyboardInterrupt:
print 'ctrl+d or z' if __name__ == '__main__':
Handle = Tomcat("/software/jenkins_tomcat", "/software/jenkins_tomcat/logs")
if len(sys.argv) < 2:
Handle.useage()
sys.exit()
elif sys.argv[1] == 'start':
Handle.start_tomcat()
elif sys.argv[1] == 'stop':
Handle.stop_tomcat()
elif sys.argv[1] == 'restart':
Handle.stop_tomcat()
time.sleep(5)
Handle.start_tomcat()
elif sys.argv[1] == 'info':
Handle.system_info()
elif sys.argv[1] == 'log':
Handle.tomcat_log()
elif sys.argv[1] == 'status':
if len(Handle.get_tomcat_pid().strip()) != 0:
print "\033[32m Tomcat Is Running is PID:\033[0m" + "\033[31m %s \033[0m" % Handle.get_tomcat_pid().strip()
else:
print "\033[32m Tomat Not Running \033[0m"
else:
Handle.useage()
Tomcat Script(python)的更多相关文章
- Python Tomcat Script(多实例)
之前书写过 Tomcat 单实例的 Python 脚本,本次增加 Tomcat 多实例的操作脚本. 1:准备 安装所需 Python 插件 A方法: pip install argparse B方法: ...
- rc.local 注意事項,call python script, file position
如果要在 rc.local 呼叫 python script python script 的位置需使用絕對路徑 其 python script 裡的有關 file 的位置也需使用 絕對路徑 如果要在 ...
- Excel vba call Python script on Mac
How can I launch an external python process from Excel 365 VBA on OSX? It took me a while, but I fig ...
- Python中文乱码
1,注意:请使用智慧型浏览器 "CHROME" 配合理解和运作本文中提到的程序. 2,提示:谷歌的CHROME浏览器是迄今为止最智慧的浏览器,没有之一,只有第一. 3,谷歌的CHR ...
- Python基础篇【第6篇】: Python模块subprocess
subprocess Python中可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen* --废弃 popen2.* ...
- 如何在batch脚本中嵌入python代码
老板叫我帮他测一个命令在windows下消耗的时间,因为没有装windows那个啥工具包,没有timeit那个命令,于是想自己写一个,原理很简单: REM timeit.bat echo %TIME% ...
- Python Twisted、Reactor
catalogue . Twisted理论基础 . 异步编程模式与Reactor . Twisted网络编程 . reactor进程管理编程 . Twisted并发连接 1. Twisted理论基础 ...
- The Python web services developer: XML-RPC for Python
原文地址:http://www.ibm.com/developerworks/webservices/library/ws-pyth10/index.html 摘要:概括地说,您可以将 XML-RPC ...
- Tomcat自动启动脚本
Tomcat自动启动脚本#!/bin/bash # chkconfig: 2345 10 90 # description: Starts and Stops the Tomcat daemon. T ...
随机推荐
- 看完这篇Redis缓存三大问题,保你面试能造火箭,工作能拧螺丝。
前言 日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题. 一旦涉及大数据量的需求,如一些商品抢购的情景,或者主页访问量瞬间较 ...
- 运行python出现 SyntaxError: Non-ASCII character '\xe6' in file /Users/finup/Documents/python_project/test.py 解决办法
使用pycharm运行程序时出现以下错误 这个错误主要是由于python2的编码默认是ASCII,你的文件里有中文就必须要用utf-8编码,只要在文件需要在文件开头标注 #coding=utf-8如下 ...
- 在 XUnit 中使用依赖注入
在 XUnit 中使用依赖注入 Intro 之前写过一篇 xunit 的依赖注入相关的文章,但是实际使用起来不是那么方便 今天介绍一个基于xunit和微软依赖注入框架的"真正"的依 ...
- Javascript 中 数组遍历 forin和forof 的区别
定义一个数组 let array = [1, 2, 3, 4]; for (let a in array){ console.log("遍历a的值 "+a+"”,数组中的 ...
- antd图标库按需加载的插件实现
前景概要 antd是阿里出品的一款基于antd的UI组件库,使用简单,功能丰富,被广泛应用在中台项目开发中,虽然也出现了彩蛋事故,但不能否认antd本身的优秀,而我们公司在实际工作中也大量使用antd ...
- 洛谷 P4042 [AHOI2014/JSOI2014]骑士游戏
题意 有\(n\)个怪物,可以消耗\(k\)的代价消灭一个怪物或者消耗\(s\)的代价将它变成另外一个或多个新的怪物,求消灭怪物$的最小代价 思路 \(DP\)+最短路 这几天做的第一道自己能\(yy ...
- P1330 封锁阳光大学——深度优先搜索DFS
P1330 封锁阳光大学 题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由 \(n ...
- 「疫期集训day7」周期
我们成功入侵了圣康坦,屋子里到处都是面包,食物,水...现在我们的目标就在眼前----亚眠------鲁道登夫攻势中损失惨重的德国精英兵 今天考试考出了历史最低,原因在于T1签到题挂了,ull真的毒瘤 ...
- ASP.NET基础温习
- 从零开始使用 Webpack 搭建 Vue3 开发环境
从零开始使用 Webpack 搭建 Vue3 开发环境 创建项目 首先需要创建一个空目录,在该目录打开命令行,执行 npm init 命令创建一个项目,这个过程会提示输入一些内容,完成后会自动生成一个 ...