python wmi 重启网卡_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" ,如果查询不到则说明启动失败。

你可能感兴趣的:(python,wmi,重启网卡)