专栏首页python3【Python运维】最简单的Pytho

【Python运维】最简单的Pytho

背景

最近在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脚本好写很多啊。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python中的列表

    序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。 1.列表 数组:存储同一...

    用户2398817
  • Thrift in python

    Thrift官网上的文档很少,从网上搜到的也大都千篇一律,即使是《Thrift: the missing guide》对如何构建python的server和c...

    用户2398817
  • python基础知识练习题(二)

    2、利用下划线将列表的每一个元素拼接成字符串,li = ['alex','eric','Witharush']

    用户2398817
  • 『中级篇』Docker service更新(52)

    ![(https://upload-images.jianshu.io/upload_images/11223715-27d2f7fc53484ed0.png?...

    IT故事会
  • 聊聊nacos ServiceManager的registerInstance

    本文主要研究一下nacos ServiceManager的registerInstance

    codecraft
  • 聊聊nacos ServiceManager的registerInstance

    本文主要研究一下nacos ServiceManager的registerInstance

    codecraft
  • 用Go编写的TCP连接监视器库

    A TCP connection monitor library written in Go.

    李海彬
  • 『高级篇』docker之DockerSwarm调整微服务及服务配置(29)

    IT故事会
  • 如何实施异构服务器的负载均衡及过载保护?

    零、需求缘起 第一篇文章“一分钟了解负载均衡”和大家share了互联网架构中反向代理层、站点层、服务层、数据层的常用负载均衡方法。 第二篇文章“lvs为何不能完...

    架构师之路
  • C++ FFLIB之FFRPC:多线程&多进程的scalability探索

    摘要: 近来在完成通用的数据分析系统ffcount时,使用了ffrpc完成了事件源和service的通信。顺便对ffrpc进行了优化和精简,接口也更易用一些。在...

    知然

扫码关注云+社区

领取腾讯云代金券