Python監視Windowsサービス

Python監視Windowsサービス

wmiPython はこのモジュールを使用して、 Windows システム上のWindows サービスを監視できます。この記事では、Python を使用して Windows サービスを監視し、サービス状態のクエリとサービスの開始と停止の機能を実装する方法を紹介します。

依存関係をインストールする

wmiモジュールを使用する前に、最初に wmi パッケージをインストールする必要があります。次のコマンドでインストールできます。

pip install wmi

サービスステータスのクエリ

このモジュールを使用してwmi、Windows システム内の既存のサービスとサービスの実行ステータスをクエリします。サンプルコードは次のとおりです。

import wmi


# 获取服务状态
def get_service_status(service_name):
    wmiobj = wmi.WMI()
    services = wmiobj.Win32_Service(Name = service_name)
    print(services[0].state)
    return services[0].state

# 查询系统中所有服务
def query_all_services():
    wmiobj = wmi.WMI()
    services = wmiobj.Win32_Service()
    for i in services:
        print(i)

サービスの開始と停止

osサービスはモジュールを使用して開始および停止できます。具体的な方法は以下の通りです。

import os
import ctypes

#判断是否有管理员权限
def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

# 启动服务
def start_service(service_name):
    if is_admin():
        cmd = 'NET START {}'.format(service_name)
        result = os.popen(cmd)
        print(result)
    else:
        print('no admin')

# 停止服务
def stop_service(service_name):
    if is_admin():
        cmd = 'NET STOP {}'.format(service_name)
        result = os.popen(cmd)
        print(result)
    else:
        print('no admin')

メモリ情報を取得する

psutilモジュールを使用してメモリ情報を取得します。具体的な方法は以下の通りです。

# -*- encoding: utf-8 -*-

# 获取内存信息
def get_memory_info():
    memory_info = {
    
    }
    mem_info = psutil.virtual_memory()
    memory_info['total']    =   mem_info.total
    memory_info['available']    =   mem_info.available
    memory_info['percent']    =   mem_info.percent
    memory_info['used']    =   mem_info.used
    memory_info['free']    =   mem_info.free
    print(memory_info)
    print(memory_info['percent'])

サンプルコード

システム内のすべてのサービスをクエリし、サービスを開始および停止する方法を示す完全なサンプル コードを添付します。

まとめ

この記事では、Python を使用して Windows サービスを監視し、サービスの状態のクエリとサービスの開始と停止の機能を実現する方法を紹介します。Windows サービスを管理する必要がある場合は、この記事で提供されているコードを参照として使用できます。

おすすめ

転載: blog.csdn.net/sinat_35773915/article/details/132223147