使用Python写一个可以监控Tomcat 运行的脚本,并且把.py文件转换成.exe文件
文章来源与博主本人的CSDN博客,博客地址:https://blog.csdn.net/weixin_43558566/article/details/101458567
之前写过.bat 脚本用来监控tomcat运行宕机后自动重启的文章,接下来提供下python脚本方法,供各位同仁参考,所有方法基于本人实际开发环境,如有瑕疵,还望各位看官批评指正!
## 原理
1.通过socket 连接需要监控的服务器及端口
2.如果无法建立连接,则说明该都端口存在问题,此时调用tomcat重启方法。注意:tomcat 启动也需要一定的时间,这里我们需要做个时间缓冲。
## 具体流程
1.打开python 编辑器,我用的是PyCharm
2.随便新建一个python项目
3.这里我开始创建python file取名TomcatRestart.py
直接上代码,具体原理上面已做说明
# -*- coding: utf-8 -*-import os
import sys
import socket
import time
import datetime
import pip
#到python的pip的路径下,一般是pythonscripts下执行命令(pip install psutil)#-----服务器上tomcat的信息和服务器的信息---
path = 'path' #服务器tomcat路径 注意需要双斜杠
ip = 'ip' #服务器ip地址
port = 8080 #tomcat端口
file_path = 'E:tomcatlog' #记录每次脚本执行的日志文件文件夹路径#-------检测8080端口是否能连接,能则tomcat运行中,否则重启tomcat----
def tomcat():try:b = s.connect((ip,port))# os.system("echo %s connect to port 8080 successfully! >> %s" %(otherStyleTime, logfile))status_code = 1except Exception:status_code = 2if status_code == 2:os.chdir(path)os.system('shutdown.bat')os.system("echo %s can't connect to port 8080, stop tomcat >> %s" %(otherStyleTime,logfile))time.sleep(1)os.system('startup.bat')os.system("echo %s tomcat restart! >> %s" %(otherStyleTime, logfile))time.sleep(60) //注:重启需要一段时间,这里放置60秒等待时间,一般服务器足够重启了
if __name__ == '__main__':while True : #每1秒循环执行一次脚本#--------创建ipv4地址簇的tcp连接的socket-------------------try:s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.settimeout(1)//设置连接时间,超过1秒无法链接,即默认tomcat 发生异常,执行tomcat()方法except socket.error as msg:os.system("echo Failed to create socket. Error code: %s , Error message : %s >> %s " %s(str(msg[0]),msg[1],logfile))now = int(time.time())timeArray = time.localtime(now)otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray) #获取固定格式时间的字符串logfile = file_path + '%s.log' %(time.strftime('%Y%m%d',time.localtime())) #日志文件存放处tomcat()time.sleep(1)
4.可以现在本地测试效果,直接run 这个TomcatRestart.py文件 ,然后发现自动打开了本地tomcat
关闭tomcat后,程序监控到关闭又会自动打开,还是比较流畅好用的对于一般中小型项目没压力。
## .py文件转换成.exe文件
上面的代码可以达到预期的效果,但是操作起来未免太麻烦,接下来我将TomcatRestart.py文件进行转换生成一个.exe,保证高效可移植。
转换步骤
1.需要安装pywin32
打开setings-------选择
查看自己编辑器是否含有标红处的插件,如没有点击右侧“+”号,搜索pywin32
选中相应版本然后进行安装
注:如果安装失败,看下具体什么原因,一般情况是pip需要升级,按照英文提示的本部进行更新,然后再重新安装pywin32就好了。
2.新建一个文件夹例如 pytomcat,将你需要转换的.py文件和exe文件的.ico图片复制到此文件下。(至于如何把图片转换成.ico格式,直接网上一大堆在线工具)
接下来打开cmd 命令窗口,通过命令进入文件夹目录下
执行命令 pyinstaller -F -i 1.ico TomcatRestart.py
很棒!转换完成!
执行完命令后,需要的exe文件就在dist文件夹中
## 双击启动TomcatRestart.exe 文件 完美运行!