from config import cfg import logging as log from backup import ( read_device_list, save_mikrotik_bcp, save_snr_bcp, save_cisco_sb_bcp, save_cisco_bcp, ) from messages import send_mail from repo import check_bcp_repo, push_to_remote import schedule import time import os def main(): check_bcp_repo() device_dict = read_device_list() log_dir: str = os.path.join(os.path.abspath(os.path.dirname(__file__)), "logs") log_file: str = os.path.join(log_dir, "logfile.log") if os.path.isfile(log_file): with open(log_file, 'w') as file: file.write('') log.info("log file clear") for device in device_dict: current_device = device_dict[device] if current_device["vendor"].lower() == "mikrotik": save_mikrotik_bcp(host=current_device["ip"], name=current_device["name"]) elif current_device["vendor"].lower() == "snr": save_snr_bcp(host=current_device["ip"], name=current_device["name"]) elif current_device["vendor"].lower() == "cisco": if current_device["model"].lower() in [ "sg350-28mp", "sg350-10mp", "cbs350-8fp-2g", "sg300-28p", "sf302-08mp", "sg300-10mpp", "cbs250-48p-4g", "cbs250-24p-4g", "sg350-28sfp", ]: save_cisco_sb_bcp( host=current_device["ip"], name=current_device["name"] ) else: save_cisco_bcp(host=current_device["ip"], name=current_device["name"]) if cfg.git.push: push_to_remote() if cfg.mail.send: if os.path.isfile(log_file): with open(log_file, 'r', encoding='utf-8') as file: text = file.read() if text != '': send_mail(text) else: log.info("log file is empty. All backups saved") if __name__ == "__main__": log.info("Starting app") schedule.every().day.at(cfg.bcp.start_at).do(main) try: main() while True: schedule.run_pending() time.sleep(120) except KeyboardInterrupt: log.info("Manual app stopped") log.info("App stopped")