From 10a02cba2f8556316065fbac51bbde534085dea3 Mon Sep 17 00:00:00 2001 From: Robert Spencer Date: Thu, 2 Sep 2021 20:39:30 +0200 Subject: [PATCH] Reinforce configuration So it breaks early if something is wrong, allows more flexibility with the bwlimit setting, and adds default values so you don't have to have everything in the configuration file. Signed-off-by: Robert Spencer --- scripts/backstep-traceback-auto | 57 +++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/scripts/backstep-traceback-auto b/scripts/backstep-traceback-auto index 5832382..1a6ad0b 100644 --- a/scripts/backstep-traceback-auto +++ b/scripts/backstep-traceback-auto @@ -56,24 +56,47 @@ if not os.path.exists(CONFIG_FILE): print("error: backup is not configured.") sys.exit(2) -config = configparser.ConfigParser() +config_default_dict = { + "debug_max_load": "20", + "max_load": "8", + "report_email": "hostmaster@iitsp.net", + "zabbix_config": "/etc/zabbix/zabbix_agentd.conf.d/allworldit.conf", + "server_path": "backup", + "server_key": "/root/.ssh/backupserver_id_rsa", +} +config = configparser.ConfigParser(defaults=config_default_dict) config.read(CONFIG_FILE) -bwlimit = config.get(PERIOD, "bwlimit") -debug_max_load = config.get(PERIOD, "debug_max_load") -max_load = config.get(PERIOD, "max_load") +bwlimit = config.getint(PERIOD, "bwlimit", fallback=None) +debug_max_load = config.getint(PERIOD, "debug_max_load") +max_load = config.getint(PERIOD, "max_load") report_email = config.get(PERIOD, "report_email") server_host = config.get(PERIOD, "server_host") server_key = config.get(PERIOD, "server_key") + +if not os.path.exists(server_key): + print("error: " + server_key + " does not exist.") + sys.exit(2) + server_path = config.get(PERIOD, "server_path") -server_port = config.get(PERIOD, "server_port") +server_port = config.getint(PERIOD, "server_port") server_user = config.get(PERIOD, "server_user") zabbix_config = config.get(PERIOD, "zabbix_config") +if not os.path.exists(zabbix_config): + print("error: " + zabbix_config + " does not exist.") + sys.exit(2) + if args.verbose: - syncopts = ["--debug", "--max-load=" + debug_max_load] + syncopts = ["--debug"] + syncopts.append("--max-load=" + str(debug_max_load)) else: - syncopts = ["--max-load=" + max_load, "--quiet", "--bwlimit=" + bwlimit] + syncopts = ["--quiet"] + syncopts.append("--max-load=" + str(max_load)) + + if bwlimit: + if bwlimit > 0: + syncopts.append("--bwlimit=" + str(bwlimit)) for lv in ast.literal_eval(config.get(PERIOD, "backup_lvs")): if args.only and args.only != lv: @@ -110,21 +133,15 @@ for lv in ast.literal_eval(config.get(PERIOD, "backup_lvs")): command_line.extend(bind_mount_args) command_line.append('--email-subject="' + PERIOD.upper() + " " + lv + '"') command_line.append("--email=" + report_email) - command_line.extend(["--port=" + server_port, "--pubkey=" + server_key]) + command_line.append("--port=" + str(server_port)) + command_line.append("--pubkey=" + server_key) command_line.extend(syncopts) - command_line.extend(["--zabbix=" + ZABBIX_ITEM, "--zabbix-config=" + zabbix_config]) + command_line.append("--zabbix=" + ZABBIX_ITEM) + command_line.append("--zabbix-config=" + zabbix_config) command_line.append( - server_user - + "@" - + server_host - + "::" - + server_path - + "/" - + PERIOD - + "-" - + VG - + "-" - + lv + "{}@{}::{}/{}-{}-{}".format( + server_user, server_host, server_path, PERIOD, VG, lv + ) ) EXIT_CODE = subprocess.call(command_line) -- GitLab