diff --git a/app/backup.py b/app/backup.py index 7683bc3..abb544e 100644 --- a/app/backup.py +++ b/app/backup.py @@ -104,6 +104,8 @@ def send_command(connection: ConnectHandler, command: str) -> str: result = "NetmikoTimeoutException" except exceptions.ReadTimeout: result = "ReadTimeout" + if len(result.split("\n")) < cfg.bcp.min_string_count: + result = 'NotEnoughLines' return result @@ -125,6 +127,9 @@ def save_mikrotik_bcp(host: str, name: str) -> None: elif result == "ReadTimeout": log.warning("Timeout read config from %r", name) return + elif result == "NotEnoughLines": + log.warning("Small number of lines %r", name) + return result = "\n".join(result.split("\n")[1:]) bcp_file_name, file_folder = get_bcp_file_path(name) with open(bcp_file_name, "w") as f: @@ -150,6 +155,9 @@ def save_snr_bcp(host: str, name: str) -> None: elif result == "ReadTimeout": log.warning("Timeout read config from %r", name) return + elif result == "NotEnoughLines": + log.warning("Small number of lines %r", name) + return bcp_file_name, file_folder = get_bcp_file_path(name) with open(bcp_file_name, "w") as f: f.write(result) @@ -174,6 +182,9 @@ def save_cisco_sb_bcp(host: str, name: str) -> None: elif result == "ReadTimeout": log.warning("Timeout read config from %r", name) return + elif result == "NotEnoughLines": + log.warning("Small number of lines %r", name) + return bcp_file_name, file_folder = get_bcp_file_path(name) with open(bcp_file_name, "w") as f: f.write(result) @@ -198,6 +209,9 @@ def save_cisco_bcp(host: str, name: str) -> None: elif result == "ReadTimeout": log.warning("Timeout read config from %r", name) return + elif result == "NotEnoughLines": + log.warning("Small number of lines %r", name) + return bcp_file_name, file_folder = get_bcp_file_path(name) with open(bcp_file_name, "w") as f: f.write(result) diff --git a/app/config.py b/app/config.py index 28e234b..8dece60 100644 --- a/app/config.py +++ b/app/config.py @@ -62,6 +62,7 @@ class ConfigBcp: in_folder: bool = config["bcp"].getboolean("in_folder") if in_folder: folder_name_pattern: str = config["bcp"].get("folder_name_pattern") + min_string_count: int = config["bcp"].getint("min_string_count") @dataclass diff --git a/app/config/config-template.ini b/app/config/config-template.ini index 2680231..7b3434b 100644 --- a/app/config/config-template.ini +++ b/app/config/config-template.ini @@ -41,7 +41,8 @@ start_at: 18:59 in_folder: True # Регулярное выражение по которому будет парситься имя папки из названия девайса folder_name_pattern: ^(.*?)- - +# Если количество строк в конфиге меньше указанного значения - ошибка, изменения не записываются. +min_string_count: 50 [net_dev] debug: False