您的位置:首页 > 财经 > 产业 > 重庆网站建设方案详细方案_知识库管理系统_google seo 优化教程_中国局势最新消息今天

重庆网站建设方案详细方案_知识库管理系统_google seo 优化教程_中国局势最新消息今天

2024/12/22 16:53:38 来源:https://blog.csdn.net/qq_41980849/article/details/144069547  浏览:    关键词:重庆网站建设方案详细方案_知识库管理系统_google seo 优化教程_中国局势最新消息今天
重庆网站建设方案详细方案_知识库管理系统_google seo 优化教程_中国局势最新消息今天

提示:
1、理论上该Python脚本可以关闭和开启所有服务
2、搜索服务采用的是模糊搜索
3、常用服务查询: 暂时只写了 mysql、postgresql 无需要其他的自行添加即可


使用方式(使用管理员权限运行):

运行方式一:使用管理员权限运行cmd/powershell,进入文件所在目录,执行命令 python 文件.py 运行
运行方式二:使用管理员的方式运行PyCharm,然后通过PyCharm运行文件

Windows服务管理脚本

import win32service
import win32serviceutil# 获取指定服务的状态
def get_service_status(service_name):try:# 打开服务控制管理器以枚举服务scm_handle = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ENUMERATE_SERVICE)# 打开指定的服务service_handle = win32service.OpenService(scm_handle, service_name, win32service.SERVICE_QUERY_STATUS)# 查询服务状态status = win32service.QueryServiceStatus(service_handle)[1]# 关闭服务句柄和服务控制管理器句柄win32service.CloseServiceHandle(service_handle)win32service.CloseServiceHandle(scm_handle)# 根据状态码返回相应的状态字符串if status == win32service.SERVICE_RUNNING:return '开启'elif status == win32service.SERVICE_STOPPED:return '关闭'else:return '未知状态'except Exception as e:print(f"获取服务状态失败: {e}")return None# 根据查询字符串列出匹配的服务。
def list_services(query):services = []try:# 打开服务控制管理器以枚举服务scm_handle = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ENUMERATE_SERVICE)# 定义服务类型和状态过滤器type_filter = win32service.SERVICE_WIN32state_filter = win32service.SERVICE_STATE_ALL# 枚举所有服务status_enum = win32service.EnumServicesStatus(scm_handle, type_filter, state_filter)for service_tuple in status_enum:service_name = service_tuple[0]if query.lower() in service_name.lower():# 获取服务状态并添加到服务列表中status = get_service_status(service_name)services.append((service_name, status))# 关闭服务控制管理器句柄win32service.CloseServiceHandle(scm_handle)except Exception as e:print(f"查询服务失败: {e}")return services# 显示服务列表,每行显示5个服务。
def display_services(services):for i, (name, status) in enumerate(services, start=1):print(f"{i}: {name}-{status}", end="\t")if i % 5 == 0:print()print()# 管理服务:查询、选择和操作服务。
def manage_services():while True:print("-----------------------------------------管理服务------------------------------------------")query = input("请输入要查询的服务名: ")services = list_services(query)if not services:print("未找到相关服务,请重新输入。")continue# 将服务列表以每行5个的方式显示出来display_services(services)try:choice = int(input("\n请输入要操作的服务编号: "))if choice < 1 or choice > len(services):raise ValueErrorselected_service, current_status = services[choice - 1]except ValueError:print("无效输入请重新输入。")continueprint("---------------------------------------管理服务-操作----------------------------------------")print("1:开启服务             2:关闭服务             3:无操作")action = input("\n请选择操作:")if action == '1':if current_status == '开启':print(f"{selected_service}服务已开启!")else:try:print(f"{selected_service}服务开启中...")win32serviceutil.StartService(selected_service)print(f"{selected_service}服务已开启")except Exception as e:print(f"启动服务失败: {e}")breakelif action == '2':if current_status == '关闭':print(f"{selected_service}服务已关闭")else:try:print(f"{selected_service}服务关闭中...")win32serviceutil.StopService(selected_service)print(f"{selected_service}服务已关闭")except Exception as e:print(f"停止服务失败: {e}")breakelif action == '3':breakelse:print("无效输入请重新输入。")# 查询常见的服务
def common_services_query():while True:print("\n-----------------------------------查询常见的服务-结果--------------------------------------")common_queries = ["mysql", "postgresql"]all_services = []for query in common_queries:all_services.extend(list_services(query))if not all_services:print("未找到常用服务。")returndisplay_services(all_services)# 提供继续操作或退出的选择choice = input("是否继续操作:(1:继续操作   2:退出)")if choice == '2':break  # 回到主菜单elif choice == '1':try:service_choice = int(input("请输入要操作的服务编号: "))if service_choice < 1 or service_choice > len(all_services):raise ValueErrorselected_service, current_status = all_services[service_choice - 1]except ValueError:print("无效输入请重新输入。")continueprint("\n-----------------------------------查询常见的服务-操作--------------------------------------")print("1: 开启服务             2: 关闭服务             3: 无操作")action = input("\n请选择操作:")if action == '1':if current_status == '开启':print(f"{selected_service}服务已开启!")else:try:print(f"{selected_service}服务开启中...")win32serviceutil.StartService(selected_service)print(f"{selected_service}服务已开启")except Exception as e:print(f"启动服务失败: {e}")breakelif action == '2':if current_status == '关闭':print(f"{selected_service}服务已关闭")else:try:print(f"{selected_service}服务关闭中...")win32serviceutil.StopService(selected_service)print(f"{selected_service}服务已关闭")except Exception as e:print(f"停止服务失败: {e}")breakelif action == '3':continue  # 回到查询常见服务菜单else:print("无效输入请重新输入。")else:print("无效输入请重新输入。")# 显示主菜单并处理用户输入。
def main_menu():while True:print("------------------------------------------主菜单------------------------------------------")print("|                                                                                       |")print("|  (0)退出                           (1)管理服务                      (2)常用服务查询    |")print("|                                                                                       |")print("-----------------------------------------------------------------------------------------")choice = input("请输入: ")if choice == '0':print("退出脚本")breakelif choice == '1':manage_services()elif choice == '2':common_services_query()else:print("无效输入请重新输入。")if __name__ == "__main__":main_menu()

Windows服务管理脚本-流程图

输入0
输入1
输入2
无效输入
开始
主菜单
退出脚本
管理服务
常见服务查询
无效输入请重新输入
请输入要查询的服务名
查询服务
找到相关服务?
显示服务列表
未找到相关服务,请重新输入
请输入要操作的服务编号
有效输入?
选择服务
无效输入请重新输入
选择操作
选择1: 开启服务?
服务已开启?
服务已开启!
启动服务中...
启动成功?
服务已开启
启动服务失败
选择2: 关闭服务?
服务已关闭?
服务已关闭
停止服务中...
停止成功?
服务已关闭
停止服务失败
选择3: 无操作?
无操作
无效输入请重新输入
返回主菜单
返回主菜单
返回主菜单
返回主菜单
返回主菜单
返回主菜单
返回管理服务
返回管理服务
返回管理服务
查询常见的服务
找到常用服务?
显示服务列表
未找到常用服务
请输入 1:继续操作 2:退出
选择1: 继续操作?
请输入要操作的服务编号
有效输入?
选择服务
无效输入请重新输入
选择操作
选择1: 开启服务?
服务已开启?
服务已开启!
启动服务中...
启动成功?
服务已开启
启动服务失败
选择2: 关闭服务?
服务已关闭?
服务已关闭
停止服务中...
停止成功?
服务已关闭
停止服务失败
选择3: 无操作?
无操作
无效输入请重新输入
返回主菜单
返回主菜单
返回主菜单
返回主菜单
返回主菜单
返回主菜单
返回查询常见服务
返回查询常见服务
选择2: 退出?
返回主菜单
无效输入请重新输入
返回查询常见服务
返回主菜单

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com