【Python運維】簡單的Python運維腳本


背景

最近在Windows 10上使用Linux子系統,發現它有一個非常坑爹的特點:Linux子系統是沒有開機關機狀態的,每次進入Bash shell就自動載入,退出后Linux子系統的所有進程都會被關閉,如果你撞了Mysql之類的服務要想隨時運行的話就要保持Bash shell的隨時開啟,更坑的是這些服務並不會隨之進入Bash shell而自動啟動, 我只好寫一個Python腳本用於管理這些服務。

相關技術

Python3, argparse module

代碼

 1 from os import system
 2 from argparse import ArgumentParser
 3 
 4 def start_service(service):
 5     system("service {} start".format(service))
 6 
 7 def stop_service(service):
 8     system("service {} stop".format(service))
 9 
10 def restart_service(service):
11     print(service)
12     system("service {} restart".format(service))
13 
14 def manage_service():
15     services = []
16     services.append("xinetd")
17     services.append("lighttpd")
18     return services
19 
20 def set_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     return parser.parse_args()
27 
28 def deal(args,services):
29     global start_service, restart_service, stop_service
30     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 else stop_service
32     for  service in services:
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腳本好寫很多啊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM