由于刚接触 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)的更多相关文章

  1. Python Tomcat Script(多实例)

    之前书写过 Tomcat 单实例的 Python 脚本,本次增加 Tomcat 多实例的操作脚本. 1:准备 安装所需 Python 插件 A方法: pip install argparse B方法: ...

  2. rc.local 注意事項,call python script, file position

    如果要在 rc.local 呼叫 python script python script 的位置需使用絕對路徑 其 python script 裡的有關 file 的位置也需使用 絕對路徑 如果要在 ...

  3. 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 ...

  4. Python中文乱码

    1,注意:请使用智慧型浏览器 "CHROME" 配合理解和运作本文中提到的程序. 2,提示:谷歌的CHROME浏览器是迄今为止最智慧的浏览器,没有之一,只有第一. 3,谷歌的CHR ...

  5. Python基础篇【第6篇】: Python模块subprocess

    subprocess Python中可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen*          --废弃 popen2.*         ...

  6. 如何在batch脚本中嵌入python代码

    老板叫我帮他测一个命令在windows下消耗的时间,因为没有装windows那个啥工具包,没有timeit那个命令,于是想自己写一个,原理很简单: REM timeit.bat echo %TIME% ...

  7. Python Twisted、Reactor

    catalogue . Twisted理论基础 . 异步编程模式与Reactor . Twisted网络编程 . reactor进程管理编程 . Twisted并发连接 1. Twisted理论基础 ...

  8. The Python web services developer: XML-RPC for Python

    原文地址:http://www.ibm.com/developerworks/webservices/library/ws-pyth10/index.html 摘要:概括地说,您可以将 XML-RPC ...

  9. Tomcat自动启动脚本

    Tomcat自动启动脚本#!/bin/bash # chkconfig: 2345 10 90 # description: Starts and Stops the Tomcat daemon. T ...

随机推荐

  1. 使用CImage双缓冲

    一普通显示:现在的VC显示图片非常方便,远不是VC6.0那个年代的技术可比,而且支持多种格式的如JPG,PNG. CImage _img; 初始化: _img.Load(L"map.png& ...

  2. JavaScript基础正则表达式的字面声明(012)

    不出所料,正则表达式也是JavaScript的一种对象.构造正则表达式也有两种,一种是使用JavaScript内置的 new RegExp() 构造函数,另一种是我们推荐的字面声明方式: // reg ...

  3. 八.django日志配置

    Django 日志 Django 使用Python 内建的logging 模块打印日志,Python 的logging 配置由四个部分组成: 记录器 —— Logger 处理程序 —— Handler ...

  4. 阿里云Linux CentOS8.1 64位服务器安装LNMP(Linux+Nginx+MySQL+PHP) 并发调试之调试工具ab(apache bench)

    ab 测试工具,全称是 apache bench ,是 Apache 提供的一款测试工具,具有简单易上手的特点,在测试 Web 服务时非常实用. ab 可以在 Windows 系统中使用,也可以在 L ...

  5. embedded database (H2, HSQL or Derby), please put it on the classpath

    Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded data ...

  6. [POJ3613] Cow Relays(Floyd+矩阵快速幂)

    解题报告 感觉这道题gyz大佬以前好像讲过一道差不多的?然鹅我这个蒟蒻发现矩阵快速幂已经全被我还给老师了...又恶补了一遍,真是恶臭啊. 题意 给定一个T(2 <= T <= 100)条边 ...

  7. BZOJ 1131 [POI2008] STA-Station 题解

    题目 The first stage of train system reform (that has been described in the problem Railways of the th ...

  8. salesman,动态规划带一点点贪心。

    题目直接链接 分析一下: 这题题意还是比较明白的(少见的一道中文题),他的意思就是:有这么一个无向图:保证联通且点与点直接有唯一的简单路径(说白了就是棵树,根节点是1),每个节点有一个权值(有正有负) ...

  9. day76 作业

    目录 需求: 作业1: 作业2: 需求: 1. 在作业1.html代码的基础上,引入vue.js文件,并实例化vm对象,绑定#goods元素 2. 在作业1.html代码的基础上,默认中间弹出窗口隐藏 ...

  10. PdfSharp库剪裁Pdf页面边缘空白部分

    背景 网上下载下来的Pdf格式电子书放到Kindle后由于页面太大,缩放后字常常小得看不清,因此可以通过剪裁页面边缘的空白以缩小页面,使Kindle上显示的字放大.在GitHub上星最多的C# Pdf ...