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
# 以上就是通过读取字典的方式读取了配置文件,非常方便