美文网首页
Python控制Sonar服务启动停止重启操作

Python控制Sonar服务启动停止重启操作

作者: 826c36c7483b | 来源:发表于2018-07-23 11:11 被阅读92次

    由于每次重启电脑之后需要重新进入sonar文件夹中启动sonar服务,比较繁琐。刚好最近在学习Python,就想着是否可以通过Python写个脚本来启动sonar,省去多余的工作量。

    因为使用Python执行shell命令需要使用到os库,所以先简单学习了一下os,其实只需要用到os的一个方法 os.system()

    这个方法就是用于执行shell命令的。

    制作菜单

    需要满足基本操作:启动/停止/重启三个功能:

        sonar_o = ['启动sonar', '停止sonar', '重启sonar']
        print('欢迎使用Sonar静态代码扫描服务')
    
        i = 1
        for s in sonar_o:
            print(i, s)
            i = i + 1
    

    打印结果:

    欢迎使用Sonar静态代码扫描服务
    1 启动sonar
    2 停止sonar
    3 重启sonar
    

    接收输入的操作符

    根据菜单编号执行相应操作,需要接收控制台输入:

    menu = int(input("请输入操作:"))
    

    这只是接收控制台输入,接收到的值存在存在menu中,还需要处理异常情况,比如:如果输入的菜单编号<1或>3是不合法的,需要重新输入:

     menu = int(input("请输入操作:"))
        if menu in range(1, 4):
            # 执行操作
            return
        else:
            printMenu()
    

    这里用到range(x,y)这个函数,这是系统函数,作用是生成一个范围list。因为我们允许接收1,2,3这三个参数,所以使用range(1,4),返回的结果是1,2,3,正好符合我的需求。

    执行命令

    通过os.system()执行shell命令

    sonar_cmd这个变量存储的是sonar.sh这个脚本的目录,完整的命令是通过在脚本目录后加上相关命令。

    如果输入的是1则执行start 命令

    如果输入的是2则执行stop命令

    如果输入的是3则执行restart命令

    def execCmd(op):
        sonar_cmd = '/usr/local/sonarqube-6.7.4/bin/macosx-universal-64/./sonar.sh '
        if op == 1:
            os.system(sonar_cmd + 'start')
        elif op == 2:
            os.system(sonar_cmd + 'stop')
        elif op == 3:
            os.system(sonar_cmd + 'restart')
    

    优化流程

    有时候需要停止服务之后又需要启动或重启服务。所以,在操作完之后需要再次询问是否需要继续操作,需要就再次打印菜单,根据用户输入执行相应命令;否则退出程序。

    def execCmd(op):
        sonar_cmd = '/usr/local/sonarqube-6.7.4/bin/macosx-universal-64/./sonar.sh '
        if op == 1:
            os.system(sonar_cmd + 'start')
        elif op == 2:
            os.system(sonar_cmd + 'stop')
        elif op == 3:
            os.system(sonar_cmd + 'restart')
    
        re = input('是否需要继续操作?y(继续操作) n(任意键退出)')
        if re == 'y':
            printMenu()
        else:
            exit()
    

    至此,一个简易的sonar控制程序就完成了,以下贴出完整代码:

    import os
    def printMenu():
        sonar_o = ['启动sonar', '停止sonar', '重启sonar']
        print('欢迎使用Sonar静态代码扫描服务')
    
        i = 1
        for s in sonar_o:
            print(i, s)
            i = i + 1
    
        menu = int(input("请输入操作:"))
        if menu in range(1, 4):
            execCmd(menu)
            return
        else:
            printMenu()
    
    def execCmd(op):
        sonar_cmd = '/usr/local/sonarqube-6.7.4/bin/macosx-universal-64/./sonar.sh '
        if op == 1:
            os.system(sonar_cmd + 'start')
        elif op == 2:
            os.system(sonar_cmd + 'stop')
        elif op == 3:
            os.system(sonar_cmd + 'restart')
    
        re = input('是否需要继续操作?y(继续操作) n(任意键退出)')
        if re == 'y':
            printMenu()
        else:
            exit()
    
    
    printMenu()
    

    Python控制Sonar服务启动停止重启操作

    相关文章

      网友评论

          本文标题:Python控制Sonar服务启动停止重启操作

          本文链接:https://www.haomeiwen.com/subject/zrwwpftx.html