python怎么写运维脚本_【Python运维】简单的Python运维脚本

背景

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

相关技术

Python3, argparse module

代码

1 from os importsystem2 from argparse importArgumentParser3

4 defstart_service(service):5 system("service {} start".format(service))6

7 defstop_service(service):8 system("service {} stop".format(service))9

10 defrestart_service(service):11 print(service)12 system("service {} restart".format(service))13

14 defmanage_service():15 services =[]16 services.append("xinetd")17 services.append("lighttpd")18 returnservices19

20 defset_args():21 parser =ArgumentParser()22 parser.add_argument("service", help = "the service to be managed.")23 parser.add_argument("-s", "--start", help = "start the service(s).", action = "store_true")24 parser.add_argument("-r", "--restart", help = "restart the service(s).", action = "store_true")25 parser.add_argument("-p", "--stop", help = "stop the service(s).", action = "store_true")26 returnparser.parse_args()27

28 defdeal(args,services):29 globalstart_service, restart_service, stop_service30 services = services if not args.service else services if args.service == "all"else[args.service]31 operation = start_service if args.start else restart_service if args.restart elsestop_service32 for service inservices:33 operation(service)34

35 if __name__ == "__main__":36 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值