博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python运维】最简单的Python运维脚本
阅读量:6529 次
发布时间:2019-06-24

本文共 2844 字,大约阅读时间需要 9 分钟。

背景

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

相关技术

Python3, argparse module

代码

from os import systemfrom argparse import ArgumentParserdef 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 servicesdef 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 -sinitctl: 无法连接到 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 -pinitctl: 无法连接到 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 -rxinetdinitctl: 无法连接到 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脚本好写很多啊。

转载地址:http://rdxbo.baihongyu.com/

你可能感兴趣的文章
GitChat · 管理 | 一篇文章读懂项目管理中的精髓
查看>>
GitChat · 前端 | 浅尝初试 React 技术栈
查看>>
Koa-jwt 说明文档(机翻润色)
查看>>
如何利用容器降低云成本?
查看>>
多线程中的局部变量
查看>>
React 组件渲染性能探索
查看>>
抽红包
查看>>
常用正则
查看>>
【MySQL】Mysql锁机制简介
查看>>
css3 loading
查看>>
在headless模式下运行selenium
查看>>
OpenJDK9 Hotspot :oops,klass 与 handle
查看>>
JetBrains 发布Kotlin 1.0
查看>>
Node.js v7 Beta版引入citgm
查看>>
WebStorm 2017.1增加对Vue.js的支持
查看>>
《软件工程师职业生涯完全指南》作者访谈
查看>>
学习Kubernetes 和容器技术体系的最佳方法
查看>>
独家解密:阿里大规模数据中心性能分析
查看>>
精益敏捷采购的外包
查看>>
Sharding-Sphere成长记——写在分布式数据库代理端里程碑版本3.0.0发布之际
查看>>