python脚本监控本地tomcat服务宕机重启,打包成exe程序并封装为系统服务

前言:有个别网站服务器是部署在windows上的。windows又不像Liunx机器有强大的crontab和shell,而且windows机器上的权限问题又很蛋疼没有linux的好用,本来想用bat脚本做这个监控的。尝试了一番后果断弃坑转向了python(python也是临时看了3天写的这个脚本,半路出家的写的不是很好报介意)

1.python脚本内容

 安装完python环境后和pyCharm后我们就可以快乐的codeing了。

在写脚本时需要引入一些python库,这个脚本里用到的库有,os,requests,schedule,time,json

有一些库没有需要自己安装

安装命令:

这里的话用pyCharm的兄弟可以直接在工具里面引入,文本编辑器编辑的需要自己在cmd命令行去安装,不然跑脚本的时候会报错。

pip install 库名

直接上代码:

import os
import requests
import schedule
import time
import json


# coding=utf-8


def job():
    try:
        localtime = time.asctime(time.localtime(time.time()))
        f = open(r'C:\monitor\log\monitor.log', 'a', encoding='utf-8')

        print("开始访问:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), file=f)
        with open(r"C:\monitor\conf\config.json", 'r') as file:
            config = json.load(file)
            information = config["information"]
        html = requests.get(information["url"], timeout=3)
        if str(200) not in str(html.status_code):
            print('访问异常,重启tomcat', file=f)
            print("访问异常:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), file=f)
            f.close()
            os.system('cmd /c taskkill /im Tomcat8.exe /f')
            time.sleep(5)
            os.system('net start Tomcat8')
        else:
            print('网站访问正常,继续监控', file=f)
            print("访问正常:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), file=f)
    except requests.RequestException:
        print('连接超时,重启tomcat', file=f)
        print("访问异常:", time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), file=f)
        f.close()
        os.system('cmd /c taskkill /im Tomcat8.exe /f')
        time.sleep(5)
        os.system('net start Tomcat8')


schedule.every(180).seconds.do(job)

while True:
    schedule.run_pending()
    time.sleep(5)

 这个是定义的json数据,就是上面代码中读取的config.json文件的内容,这个url地址可以自己定义变成了可配置的就很方便。

{
  "information": {
    "url": "http://localhost:8080/"
  }
}

2.脚本打包成exe程序

打包脚本时会用到一个pyinstaller的工具

安装时指定一个源,用原本的源下载速度很慢

这里我指定的是清华源  

#https://pypi.tuna.tsinghua.edu.cn/simple/
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/

 安装完成后,就可以进行打包exe了。

打包exe时,可以指定一个自己喜欢的图标(图标可以上阿里巴巴矢量图标库上找找看哈哈),下面是打包命令

pyinstall -i 图标.ico -F 脚本名.py

 这个是我打包成exe后的样子。是不是很好看呢。

 在windows服务器上运行时,记得创建我们的目录,将json文件放到目录下,不然就读不到了。

python脚本监控本地tomcat服务宕机重启,打包成exe程序并封装为系统服务_第1张图片

 日志目录记得也创建一下。

3.nssm封装我们的exe程序为系统服务

exe打包完了,想让我们的脚本程序开机自起怎么办呢,这个时候就用到了nssm工具,这个工具真的超好用!

NSSM官网地址:NSSM - the Non-Sucking Service Managerhttp://nssm.cc/download

 使用方法:直接下载解压

解压完后目录结构如下:

 python脚本监控本地tomcat服务宕机重启,打包成exe程序并封装为系统服务_第2张图片

 使用NSSM工具时用管理员打开cmd命令行工具,cd 到对应的目录下(你电脑是32位的就进入win32,是64位的就进入win64目录下)

cmd命令行中执行:

nssm install 

会弹出一个框

python脚本监控本地tomcat服务宕机重启,打包成exe程序并封装为系统服务_第3张图片

配置项说明:

Path:运行应用程序的程序

Startup directory:应用程序所在的目录

Arguments:应用运行的参数

Service name:生成服务的名称

最后点击install service 完成windows服务安装,在windows服务列表就能看到创建的服务了。

好了,到这里就配置完毕了,赶快重启一下服务器感受一下吧!

你可能感兴趣的:(python脚本,windows,运维,python)