71 lines
2.1 KiB
Python
71 lines
2.1 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()
|
|
send_mail(text)
|
|
|
|
|
|
|
|
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")
|