【Python运维】最简单的Python运维脚本
admin
2023-07-31 01:47:15
0

背景

最近在Windows 10上使用Linux子系统,发现它有一个非常坑爹的特点:Linux子系统是没有开机关机状态的,每次进入Bash shell就自动载入,退出后Linux子系统的所有进程都会被关闭,如果你撞了Mysql之类的服务要想随时运行的话就要保持Bash shell的随时开启,更坑的是这些服务并不会随之进入Bash shell而自动启动, 我只好写一个Python脚本用于管理这些服务。

相关技术

Python3, argparse module

代码

from os import system
from argparse import ArgumentParser

def start_service(service):
    system(\"service {} start\".format(service))

def stop_service(service):
    system(\"service {} stop\".format(service))

def restart_service(service):
    print(service)
    system(\"service {} restart\".format(service))

def manage_service():
    services = []
    services.append(\"xinetd\")
    services.append(\"lighttpd\")
    return services

def set_args():
    parser = ArgumentParser()
    parser.add_argument(\"service\", help = \"the service to be managed.\")
    parser.add_argument(\"-s\", \"--start\", help = \"start the service(s).\", action = \"store_true\")
    parser.add_argument(\"-r\", \"--restart\", help = \"restart the service(s).\", action = \"store_true\")
    parser.add_argument(\"-p\", \"--stop\", help = \"stop the service(s).\", action = \"store_true\")
    return parser.parse_args()

def deal(args,services):
    global start_service, restart_service, stop_service
    services = services if not args.service else services if args.service == \"all\"else [args.service]
    operation = start_service if args.start else restart_service if args.restart else stop_service
    for  service in services:
       operation(service)

if __name__ == \"__main__\":
    deal(set_args(),manage_service())

运行

开启服务

(env) root@DESKTOP-1DDIIV2:~# python pyops.py all -s
initctl: 无法连接到 Upstart: Failed to connect to socket /com/ubuntu/upstart: 拒绝连接
 * Starting internet superserver xinetd                                                                                                                          [fail]
 * Starting web server lighttpd                                                                                                                                  [ OK ]
(env) root@DESKTOP-1DDIIV2:~#

关闭服务

(env) root@DESKTOP-1DDIIV2:~# python pyops.py xinetd -p
initctl: 无法连接到 Upstart: Failed to connect to socket /com/ubuntu/upstart: 拒绝连接
 * Stopping internet superserver xinetd                                                                                                                          [ OK ]
(env) root@DESKTOP-1DDIIV2:~#

重启服务

(env) root@DESKTOP-1DDIIV2:~# python pyops.py xinetd -r
xinetd
initctl: 无法连接到 Upstart: Failed to connect to socket /com/ubuntu/upstart: 拒绝连接
 * Stopping internet superserver xinetd                                                                                                                          [ OK ]
 * Starting internet superserver xinetd                                                                                                                          [ OK ]
(env) root@DESKTOP-1DDIIV2:~#

感想

Python脚本还是比shell脚本好写很多啊。

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...