文档章节

【Python运维】简单的Python运维脚本

duyixian1234
 duyixian1234
发布于 2016/08/31 09:56
字数 435
阅读 20
收藏 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脚本好写很多啊。

© 著作权归作者所有

共有 人打赏支持
duyixian1234
粉丝 0
博文 7
码字总数 2707
作品 0
杭州
私信 提问
Python在DevOps中的应用

互联网时代,只有能够快速试验新想法,并在第一时间,安全、可靠的交付业务价值,才能保持竞争力。DevOps推崇的自动化构建/测试/部署,以及系统度量等技术实践,是互联网时代必不可少的。 大...

抚琴煮酒
2018/08/10
0
0
云计算培训学院,云计算Python自动化运维开发实战

都忘记是什么时候知道python的了,我是搞linux运维的,早先只是知道搞运维必须会shell,要做一些运维自动化的工作,比如实现一些定时备份数据啊、批量执行某个操作啊、写写监控脚本什么的。后...

长沙千锋
2018/05/15
0
0
【我拼搏的2016】python 学习之路

2016年是一个丰收的一年,这一年我选择了51学院python 微职位培训课程。学习的初衷是为了提升自己技术,增强职场竞争力。现在竞争的年代,不断进步才是生存之道。说实话在漫长的职业生涯中,...

yaabb163
2018/06/26
0
0
一套来自年薪40W的Python大神分享的学习体系

不论你是对Python初出茅庐,还是如指诸掌,这篇文章对你的收获总归还是有的啦,可能只是程度的问题。好了不扯远了,来说正题,下面在分享这套体系前还是要让Python做一下“自我介绍”。 1.Py...

Python共读
2018/08/27
0
0
python大法之一-python是什么,及安装

个人独立博客http://www.xbman.cn 出处:http://www.xbman.cn/article/2 常言说得好会一技走遍天下。今天开始记录分享一下python的相关知识,算是对自己学习的总结。 第一篇 python是什么,及...

魏昊晅
2018/06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周四乱弹 —— Im fine

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @LuckyXu:分享戴荃的单曲《小荃拳之歌》: 手机党少年们想听歌,请使劲儿戳(这里) 今天遇到倒霉事了, @ FalconChen :电梯宕机了我靠 但是...

小小编辑
23分钟前
22
4
【转载】uclibc和glibc的差别

转载自:http://blog.163.com/huangnan0727@126/blog/static/30626184201042022011225/ CC的标准库,就是glibc这个库,里面有GCC各种标准函数的实现,还有各种unix系的函数在里面。 当初创建...

shzwork
32分钟前
1
0
关于360插件化Replugin Activity动态修改父类的字节码操作

近期在接入360插件化方案Replugin时,发现出现崩溃情况。 大概崩溃内容如下: aused by: java.lang.ClassNotFoundException: Didn't find class "x.x.x.xActivity" on path: 我自己在插件代码......

Gemini-Lin
今天
1
0
mybatis缓存的装饰器模式

一般在开发生产中,对于新需求的实现,我们一般会有两种方式来处理,一种是直接修改已有组件的代码,另一种是使用继承方式。第一种显然会破坏已有组件的稳定性。第二种,会导致大量子类的出现...

算法之名
昨天
22
0
单元测试

右键方法 Go To --> Test,简便快速生成测试方法。 相关注解 @RunWith(SpringRunner.class) 表示要在测试环境中跑,底层实现是 jUnit测试工具。 @SpringBootTest 表示启动整个 Spring工程 @A...

imbiao
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部