Python WMI调用短程机器 并根据端口号杀死JAVA进程,重启JAR文件

     首先说公司项目架构吧。公司后端走的是Spring MVC,通过各种微服务实现数据的可用性和安全性。微服务用的是阿里的dubbo服务,服务是通过JAR的方式启动,因为每次部署都需要本地打包,然后上传到服务器,然后重启服务,JAR的打包是放在Jenkins里,本来想通过Jenkins搞定,发现实现不了(可能是我比较弱。。。),所以决定用脚本执行。目前部署服务需要如下几步:
        1. Jenkins 打包JAR包并上传到服务器
        2. Jenkins 执行Python文件杀死服务并重启服务
1不是本次的重点,2才是。
一  Python环境的搭建(小哥哥用的是Python 3.6)
     这个就不赘述
二  类库的安装
    到Python安装的路径下找到Scripts,这个下面是pip的执行路径,然后执行指令:
    pip install wmi (如果是新手安装失败,看看是不是VS 2015没有安装,我就是这个原因造成的)
三  Python代码编写
     WMI远程机器和执行bat文件网上例子都有,并非我原创。另外,我初始的想法是bat文件全部搞定,但是执行过程中发现bat文件无法启动JAR文件,没办法,只能退而求其次,先bat文件杀死服务,在window指令启动JAR文件。
服务器上根据端口杀死进程(非原创)bat文件:

    @echo off
    setlocal enabledelayedexpansion
    for /f "delims=  tokens=1" %%i in ('netstat -aon ^| findstr "50880"') do (
    set a=%%i
    goto js
    )
    :js
    taskkill /f /pid "!a:~71,5!"
    pause

Python程序:

import wmi

def sys_version(ipaddress, user, password):
    conn = wmi.WMI(computer=ipaddress, user=user, password=password)
    print("远程机器成功:" + ipaddress)
    try:
        filename = r"D:\pathfinder\kill-pathfinder.bat"  # 此文件在远程服务器上
        killJavaAppCommond = r"cmd /c call %s" % filename
        conn.Win32_Process.Create(CommandLine=killJavaAppCommond)  #执行bat文件  根基文件端口杀死JAVA进程
        startJavaAppCommond = r"java -server -ms512m -mx512m -Xmn256m -Djava.awt.headless=true -XX:MaxPermSize=128m -jar D:/pathfinder/pathfinder-5.4.0.jar"
        conn.Win32_Process.Create(CommandLine=startJavaAppCommond)  #执行bat文件   Win32_Process.Create
        print("执行程序成功")
    except Exception as e:
        print(e)

if __name__ == '__main__':
    sys_version(ipaddress="192.168.0.85", user="administrator", password="1235.com")

写在最后,执行完成后服务器上不会有cmd命令窗口,如果需要检查dubbo服务是否开启,请根据服务端口查询进程。指令如下:netstat -aon|findstr "XXXX" ,如果查询不到则说明启动失败。

转载于:https://my.oschina.net/zhaochuanxi/blog/1620045

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值