yaml工程的配置文件读取


1、安装PyYAML模块

pip install -i https://pypi.douban.com/simple --trusted-host=pypi.douban.com PyYAML

2、yaml配置文件示例

#####
#扫描主机配置信息
#####
hostsinfo :
# 主机段,EXP:['192.168.6'] or ['192.168.1',192.168.2]
            nets : ['192.168.1']
# 端口段
            ports : "22,222,2222,22222,2222"
# SSH key文件列表
            ssh_key_file : ['/opt/key/first_rsa','/opt/key/senncond_rsa','/opt/key/third_rsa']
# 执行命令获取系统相关信息
            syscmd_list : ["cat /etc/issue",
                           "cat /etc/redhat-release",
                           "hostname",
#                           "cat /sys/class/net/[^vtlsb]*/address",
                           "cat /sys/class/net/[^vtlsb]*/address||esxcfg-vmknic -l|awk '{print $8}'|grep ':'",
                           "dmidecode -s system-serial-number",
                           "dmidecode -s system-manufacturer",
                           "dmidecode -s system-product-name"]
#####
# SSH登录密码列表
#####
            ssh_pass : ['123456','passwd2','passwd3']
# 黑名单查询
            black_list : []
# Email收件人列表
            email_list : ["jeson@imoocc.com"]

#Docker容器相关配置信息
dockerinfo :
# SSH登录机器的密码列表
             ssh_pass : ['123456','dockerpass2','dockerpass3']

#####
# 网络设备信息列表
#####
netinfo :
# OID:获取交换机主机名
           sysname_oid : "1.3.6.1.2.1.1.5.0"
# OID:获取交换机SN信息
           sn_oids : ["1.3.6.1.2.1.47.1.1.1.1.11.1","1.3.6.1.2.1.47.1.1.1.1.11.1001"]
# 团队名(用于SNMP认证)
           community : "public"
# 收集配置
           tfp_server : '192.168.1.1'
# 开启登录验证
           login_enable : 'True'
# 开启备份验证
           backup_enable : 'True'

3、通过yaml模块读取配置文件

In [1]: import yaml                                                                                                                                                                                                                                                         

In [2]: file = open('djapp/conf/scanhosts.yaml', 'r', encoding='utf-8')                                                                                                                                                                                                     

In [3]: file_data = file.read()                                                                                                                                                                                                                                             

In [4]: data = yaml.load(file_data)                                                                                                                                                                                                                                         
<ipython-input-4-430d4466b052>:1: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
  data = yaml.load(file_data)

In [5]: file.close()                                                                                                                                                                                                                                                        

In [6]: print(data)                                                                                                                                                                                                                                                         
{'hostsinfo': {'nets': ['192.168.1'], 'ports': '22,222,2222,22222,2222', 'ssh_key_file': ['/opt/key/first_rsa', '/opt/key/senncond_rsa', '/opt/key/third_rsa'], 'syscmd_list': ['cat /etc/issue', 'cat /etc/redhat-release', 'hostname', "cat /sys/class/net/[^vtlsb]*/address||esxcfg-vmknic -l|awk '{print $8}'|grep ':'", 'dmidecode -s system-serial-number', 'dmidecode -s system-manufacturer', 'dmidecode -s system-product-name'], 'ssh_pass': ['123456', 'passwd2', 'passwd3'], 'black_list': [], 'email_list': ['jeson@imoocc.com']}, 'dockerinfo': {'ssh_pass': ['123456', 'dockerpass2', 'dockerpass3']}, 'netinfo': {'sysname_oid': '1.3.6.1.2.1.1.5.0', 'sn_oids': ['1.3.6.1.2.1.47.1.1.1.1.11.1', '1.3.6.1.2.1.47.1.1.1.1.11.1001'], 'community': 'public', 'tfp_server': '192.168.1.1', 'login_enable': 'True', 'backup_enable': 'True'}}

In [7]: print(type(data))                                                                                                                                                                                                                                                   
<class 'dict'>

In [8]: print(data['hostsinfo']['ports'])                                                                                                                                                                                                                                  
22,222,2222,22222,2222
# 以上就是通过读取字典的方式读取了配置文件,非常方便