PROXY_ADD_START10.21.16.88PROXY_ADD_ENDAGENT_ADD_START10.11.12.1110.11.12.12AGENT_ADD_END
def fileAnalyze(self, fileName): """ 解析列表文件中的zabbix proxy ip及zabbix agent ip信息 根据固定标志字段区分PROXY_ADD段和AGENT_ADD段,设置初始标志位状态, 逐行读取文件并更新标志位。按照标志位状态更新到proxy_ips和agent_ips :param fileName: zabbix-agent-ip.xxx :return:proxy_ips, agent_ips """ # 指定proxy_ip标志字段 PROXY_ADD_START = "PROXY_ADD_START" PROXY_ADD_END = "PROXY_ADD_END" # 待安装agent_ip标志字段 AGENT_ADD_START = 'AGENT_ADD_START' AGENT_ADD_END = 'AGENT_ADD_END' # 存储标志字段状态 PROXY_STATUS = 0 AGENT_STATUS = 0 proxy_ips = set() agent_ips = set() try: # 判断列表文件是否存在 if os.path.exists(fileName): f = open(fileName, 'r') else: logger.info(fileName, "不存在") return for line in f.readlines(): line = line.strip() # 如果读取到的是标志字段,则修改对应的状态,如果是数据则放入对应的set if line == PROXY_ADD_START: if PROXY_STATUS: logger.error("格式错误,有多行PROXY_ADD_START") return else: PROXY_STATUS = 1 logger.info("开始读取新增的代理IP进入内存********") elif line == PROXY_ADD_END: if not PROXY_STATUS: logger.error("格式错误,没有PROXY_ADD_START或者有多行PROXY_ADD_END") return else: PROXY_STATUS = 0 logger.info("结束读取新增的代理IP进入内存********") elif line == AGENT_ADD_START: if AGENT_STATUS: logger.error("格式错误,有多行PROXY_ADD_START") return else: AGENT_STATUS = 1 logger.info("开始读取待安装的Zabbix Agent IP进入内存********") elif line == AGENT_ADD_END: if not AGENT_STATUS: logger.error("格式错误,没有AGENT_ADD_START或者有多行AGENT_ADD_END") return else: AGENT_STATUS = 0 logger.info("结束读取待安装的Zabbix Agent IP进入内存********") elif line.startswith('#'): logger.info(line, "被注释,已过滤") else: if PROXY_STATUS: if line in proxy_ips: logger.warning("Proxy代理IP:", line, "重复,已过滤") else: proxy_ips.add(line) elif AGENT_STATUS: if line in agent_ips: logger.warning("Zabbix Agent IP:", line, "重复,已过滤") else: agent_ips.add(line) # 判断文件是否正常结束 if PROXY_STATUS or AGENT_STATUS: logger.error("格式错误,文件没有正常结束") return finally: if os.path.exists(fileName) and f: f.close() return proxy_ips, agent_ips