配置文件细节处理思路

一、conf 文件

  • 在conf文件夹创建settings.py 的配置文件

例如这次的运维管理系统,我们将主要会用的模块做好配置封装

MODE = "Agent" #Salt,SSH

二、在src业务逻辑

  • 在src文件夹创建script.py 的脚本文件

(1) 考虑用户配置时,会出现在settings.py 限定的MODE变量中输入空,或者出现拼写错误和超出预期配置,解决方法在脚本文件中,__init__做好判断
    def __init__(self):
        #创建一个限定的集合
        mode_list = ['SSH','Salt','Agent']
        # 判断用户输入的是否在我们的限定集合中
        if setting.MODE in mode_list:
            self.mode = setting.MODE
        else:
            raise Exception('配置文件错误')
(2) 分析,首先判断配置文件执行的对应方法 ,通过方法返回值判断平台,接受平台返回的内容
    # 只有这三种方式
    def ssh(self,cmd):
        pass

    def salt(self,cmd):
        pass

    def agent(self,cmd):
        pass

shell_cmd 方法通过判断用户配置文件设置的属性,来执行对应方法,并返回对应cmd查回的指令

    def shell_cmd(self,cmd):
        # 执行判断平台
        if self.mode == "SSH":
            ret = self.ssh(cmd)
        elif self.mode == "Salt":
            ret = self.salt(cmd)
        else:
            ret = self.agent(cmd)

        return  ret

execute,判断指令的系统,然后到对应的方法中去处理,因为处理是多方面的,可以通过指令来处理内存硬盘多方面的方法,所以通过写继承类,来额外执行构成插拔的模式

    def execute(self):
        ret = self.shell_cmd("查看 命令的犯法")
        if ret == 'win':
           return self.windows()
        elif ret == "linux":
            return self.linux()

        else:
            raise  Exception('只支持linux,windows')

撰写继承类,用来查硬盘信息,继承时要记住,父类的self,对应的是创建子类对象,子类中没有去父类查找,父类中,子类重写父类对应方法

class DiskPlugin(BasePlugin):
    def windows(self):
        return '硬盘'
    def linux(self):
        return '硬盘'

三、整体代码

from  conf import setting
class BasePlugin(object):
    def __init__(self):
        mode_list = ['SSH','Salt','Agent']
        if setting.MODE in mode_list:
            self.mode = setting.MODE
        else:
            raise Exception('配置文件错误')

    def ssh(self,cmd):
        pass

    def salt(self,cmd):
        pass

    def agent(self,cmd):
        pass


    def shell_cmd(self,cmd):

        # 执行判断平台
        if self.mode == "SSH":
            ret = self.ssh(cmd)
        elif self.mode == "Salt":
            ret = self.salt(cmd)
        else:
            ret = self.agent(cmd)

        return  ret

    def execute(self):
        ret = self.shell_cmd("查看 命令的犯法")
        if ret == 'win':
           return self.windows()
        elif ret == "linux":
            return self.linux()

        else:
            raise  Exception('只支持linux,windows')


    def linux(self):
        raise Exception('....')

    def windows(self):
        raise Exception('....')


class DiskPlugin(BasePlugin):
    
    def windows(self):
        output = self.shell_cmd('as')
        return output
    
    def linux(self):
        output = self.shell_cmd('as')
        return output


你可能感兴趣的:(配置文件细节处理思路)