net-backup/app/main.py

73 lines
2.3 KiB
Python

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")