bat脚本中获取上级目录_使用Python写一个可以监控Tomcat 运行的脚本,并且把.py文件转换成.exe文件...

0ac1fa3b34668bb29b6f627d370c900c.png

使用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

52995856e06485df7f6324bd4f817aa8.png

2.随便新建一个python项目

bb96a2b225b2fb68959bf810bc479548.png

3.这里我开始创建python file取名TomcatRestart.py

650e35ab199504d6c052bebaa12d62d8.png

直接上代码,具体原理上面已做说明

# -*- 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

4c183193e37f48c4cdd4b4cb1a4224ac.png

关闭tomcat后,程序监控到关闭又会自动打开,还是比较流畅好用的对于一般中小型项目没压力。

## .py文件转换成.exe文件

上面的代码可以达到预期的效果,但是操作起来未免太麻烦,接下来我将TomcatRestart.py文件进行转换生成一个.exe,保证高效可移植。

转换步骤

1.需要安装pywin32

打开setings-------选择

39425df87ca30b31e062da08b69adfe1.png

0d1157473f79267e8dbd15931017eead.png

查看自己编辑器是否含有标红处的插件,如没有点击右侧“+”号,搜索pywin32

982e6fcbc6ee31ab0e05fba39885f03b.png

选中相应版本然后进行安装

6755aa3188bb32753cdeaf7b28facaf4.png

注:如果安装失败,看下具体什么原因,一般情况是pip需要升级,按照英文提示的本部进行更新,然后再重新安装pywin32就好了。

2.新建一个文件夹例如 pytomcat,将你需要转换的.py文件和exe文件的.ico图片复制到此文件下。(至于如何把图片转换成.ico格式,直接网上一大堆在线工具)

41a311497fa53dc0b5ef349702c9a62d.png

接下来打开cmd 命令窗口,通过命令进入文件夹目录下

9b4e0c1a62e96e816a70e33a18d3c36a.png

执行命令 pyinstaller -F -i 1.ico TomcatRestart.py

0b4312b8e1ddbf455b817511f0b1124f.png

很棒!转换完成!

执行完命令后,需要的exe文件就在dist文件夹中

ef47d745fcc6d62cfb507c43eb3fefd6.png

## 双击启动TomcatRestart.exe 文件 完美运行!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于产品推荐的10个问题

很多零售商使用自己主动的产品推荐技术来添加他们的销售额和转化率。这些推荐的物品一般是商业网站上动态生成的。通常基于特定客户或一组客户的购买习惯。 Strands Recommender 是一个率先的动态生成产品推荐的提供者,我们近期採訪了其市场经理 Trevor Legwinski, …

史上最低估自己的天才科学家!预言自己的发现无用,没想到影响全世界,可他却在37岁..........

全世界只有3.14 % 的人关注了爆炸吧知识天妒英才真实存在赫兹在证明了电磁波存在后,他对自己的发现做了一个十分不自信的预测:“我认为我发现的无线电波不会有任何实际应用。”当然,也许是他太优秀了,干啥啥都行,所以觉…

VC2008的运行库问题。

有两种运行库,第一种包含有DEBUG版本的DLL和别的一些我不知道的文件。该运行库是从vc2008sp1补丁包里提出来的。第二种是微软官网上随处可以见到的,比第一个小,因为不包含DEBUG版本。 1)Visual C 2008 x86 Runtime Setup VC_x86Ru…

poj 1328

1、贪心算法&#xff0c;刚开始不知道哪里搞错了&#xff0c;总是超时.... 1 #include<cstdio>2 #include<algorithm>3 #include<cstring>4 #include<queue>5 #include<math.h>6 #include <iostream>7 #include <string>8 #include …

阿里分布式中间件Seata从入门到精通

最近在写一本关于阿里巴巴分布式事务中间件 Seata 的电子书&#xff0c;Seata可以说是分布式事务中间件中最完善的了&#xff0c;包括了 AT、TCC、Saga、XA 四种模式&#xff0c;目前 Seata 已经更新到了 1.4.2 版本。这本电子书主要分成两部分&#xff0c;第一部分是入门学习&…

Android之Gradle Plugin Samples 之Gradle Library Projects

Gradle Library Projects Gradle 项目可以依赖于其它组件。这些组件可以是外部二进制包,或者是其它的 Gradle 项目。 在本例中, app/build.gradle 中有以下内容: dependencies { compile fileTree(dir: libs, include: [*.jar]) compile com.android.support:appcompat-v7:…

sql两个列值以下划线拼接得到一个新的列_面试必备sql知识点——MySQL基础

在刷了上百道sql题后&#xff0c;发现所有的题目都是基于某一个或几个知识点来做考察的&#xff0c;所以理清基础的知识细节&#xff0c;才能在题目考察到任意知识点时&#xff0c;找到解决线索。温故而知新&#xff0c;学习在于总结&#xff0c;于是我再次对已经学习过的mysql…

为什么不能除以0?

全世界只有3.14 % 的人关注了爆炸吧知识说出来你可能不信但这是真的今天学习了除法的表妹跑来问我&#xff1a;为什么不能除以0&#xff1f;就这个问题&#xff0c;我专门请来了高冷的Siri。同样是数字&#xff0c;0为什么就会这么惨呢&#xff1f;小学生小学老师会直接给你来一…

构造函数、析构函数

构造函数、析构函数// Employee.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <string.h> #include <iostream.h> class Employee //定义员工类Employee{ private: char EmployeeID[20]; …

一步步构建大型网站架构

之前我简单向大家介绍了各个知名大型网站的架构&#xff0c;MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典型&#xff0c;我们可以从中获取很多有关网站架构方面的知识&#xff0c;看了之后你会发现你原来的想法很可能…

为什么 Dictionary 没有 AddRange 方法?

咨询区 Custodio&#xff1a;我一直都有一个疑惑&#xff1f;那就是为啥 Dictionary 不提供 AddRange 方法呢&#xff1f;回答区 Rafal Zajac&#xff1a;我觉得 Dictionary 之所以没有提供 AddRange 方法&#xff0c;主要还是考虑当遇到重复key的时候该如何处理&#xff1f;比…

Android之webview与js交互

对于android初学者应该都了解webView这个组件。之前我也是对其进行了一些简单的了解&#xff0c;但是在一个项目中不得不用webview的时候&#xff0c;发现了webview的强大之处&#xff0c;今天就分享一下使用webview的一些经验。 1、首先了解一下webview。 webview介绍的原文如…

java.util.ResourceBundle使用详解

java.util.ResourceBundle使用详解一、认识国际化资源文件这个类提供软件国际化的捷径。通过此类&#xff0c;可以使您所编写的程序可以&#xff1a;轻松地本地化或翻译成不同的语言一次处理多个语言环境以后可以轻松地进行修改&#xff0c;支持更多的语言环境说的简单点&#…

12如何隐藏dock栏_iPhone边框“变色”壁纸,隐藏Dock栏

自从iOS14上线以来&#xff0c;iPhone的玩法真的是花样百出&#xff0c;今天给大家带来一组很有意思的iPhone专用壁纸&#xff0c;不仅拥有色彩边框&#xff0c;还能隐藏主屏界面底部的Dock栏。这组壁纸除了外边框自带颜色以外&#xff0c;锁屏界面的通知栏和底部两个按钮的位置…

IE开发人员工具无法使用

第一种情况&#xff1a;开发人员工具只在任务栏显示&#xff0c;桌面上看不到&#xff08;我遇到的是这种情况&#xff0c;解决方法如下&#xff09; 将鼠标放在任务栏的开发者工具&#xff0c;出现缩略图&#xff0c;也就是任务栏上方的预览图&#xff0c;可以看到开发人员工具…

微信新功能又来了,这些功能再次打开了我新世界的大门!

全世界只有3.14 % 的人关注了爆炸吧知识微信视频号&#xff0c;是一个人人都可记录和创作的内容平台&#xff0c;也是一个了解他人、了解世界的窗口。在过去一段时间里&#xff0c;视频号可能是微信迭代最多&#xff0c;变化最多&#xff0c;也受到最多关注的功能。内容创作者大…

Processing编译android的apk应用

折腾了3天&#xff0c;总算弄进去了&#xff0c;真麻烦~&#xff01; 成果如下&#xff1a; 转载于:https://www.cnblogs.com/x5115x/archive/2013/04/11/3013593.html

EF Core 小技巧:迁移已经应用到数据库,如何进行迁移回退操作?

场景描述&#xff1a;项目中存在两个迁移 Teacher 和 TeachingPlan &#xff0c;TeachingPlan 在 Teacher 之后创建&#xff0c;并且已经执行 dotnet ef database update 将新迁移应用到数据库。此时&#xff0c;因为实体修改&#xff0c;我们希望删除 TeachingPlan 迁移然后创…

Android之DiskLruCache(缓存工具)

DiskLruCache DiskLruCache是一个十分好用的android缓存工具&#xff0c;我们可以从GitHub上下载其源码&#xff1a;https://github.com/JakeWharton/DiskLruCache DiskLruCache所有的数据都存储在/storage/emulated/0/Android/data/应用包名/cache/XXX文件夹中(你也可以修改&…

手机自动化测试:appium源码分析之bootstrap七

手机自动化测试&#xff1a;appium源码分析之bootstrap七poptest是国内唯一一家培养测试开发工程师的培训机构&#xff0c;以学员能胜任自动化测试&#xff0c;性能测试&#xff0c;测试工具开发等工作为目标。poptest测试开发工程师就业培训请大家咨询qq&#xff1a;908821478…