Compare commits

..

No commits in common. "caa50eff25393b3ac0aef9806717c297f6ab836a" and "9f8a695ba5304eb1d0f8c57b23eb8ecae9d7ecae" have entirely different histories.

4 changed files with 12 additions and 38 deletions

View File

@ -37,16 +37,12 @@ def read_device_list() -> dict[str, dict[str, str]]:
def connect_to_device(vendor: str, host: str, name: str="") -> ConnectHandler:
log_dir: str = os.path.join(os.path.abspath(os.path.dirname(__file__)), "logs")
conn_conf: dict = {
"host": host,
"username": cfg.net_dev.user,
"password": cfg.net_dev.pwd,
"port": cfg.net_dev.ssh_port,
}
if cfg.net_dev.debug:
conn_conf["session_log"] = os.path.join(log_dir, 'session_log.log')
if vendor.lower() == "mikrotik":
conn_conf["device_type"] = "mikrotik_routeros"
if cfg.net_dev.domain is not None:
@ -65,7 +61,7 @@ def connect_to_device(vendor: str, host: str, name: str="") -> ConnectHandler:
conn_conf["username"] = cfg.net_dev.domain + "\\" + cfg.net_dev.user
try:
connection: ConnectHandler = ConnectHandler(**conn_conf)
log.info("connect to %s %s %s", vendor, name, host)
log.info("connect to %s %s", name, host)
return connection
except exceptions.NetmikoAuthenticationException:
log.warning("Authentication error %s %s ", name, host)
@ -76,14 +72,10 @@ def connect_to_device(vendor: str, host: str, name: str="") -> ConnectHandler:
def send_command(connection: ConnectHandler, command: str) -> str:
log.info("send command")
try:
result: str = connection.send_command(command, read_timeout=cfg.net_dev.read_timeout, delay_factor=cfg.net_dev.delay_factor)
log.info('command send success')
result: str = connection.send_command(command, read_timeout=30)
except exceptions.NetmikoTimeoutException:
result = "NetmikoTimeoutException"
except exceptions.ReadTimeout:
result = "ReadTimeout"
return result
@ -98,13 +90,10 @@ def save_mikrotik_bcp(host: str, name: str) -> None:
return
result = send_command(connection, "export terse show-sensitive")
connection.disconnect()
log.info("disconnected from %r", name)
if result == "NetmikoTimeoutException":
log.warning("Timeout error %r", name)
return
elif result == "ReadTimeout":
log.warning("Timeout read config from %r", name)
return
log.info("disconnected from %r", name)
result = "\n".join(result.split("\n")[1:])
with open(os.path.join(cfg.bcp.dir, name), "w") as f:
f.write(result)
@ -124,10 +113,7 @@ def save_snr_bcp(host: str, name: str) -> None:
connection.disconnect()
log.info("disconnected from %r", name)
if result == "NetmikoTimeoutException":
log.warning("Timeout error %r", name)
return
elif result == "ReadTimeout":
log.warning("Timeout read config from %r", name)
log.warning("Timeout read config from %s", name)
return
with open(os.path.join(cfg.bcp.dir, name), "w") as f:
f.write(result)
@ -147,10 +133,7 @@ def save_cisco_sb_bcp(host: str, name: str) -> None:
connection.disconnect()
log.info("disconnected from %s", name)
if result == "NetmikoTimeoutException":
log.warning("Timeout error %r", name)
return
elif result == "ReadTimeout":
log.warning("Timeout read config from %r", name)
log.warning("Timeout read config from %s", name)
return
with open(os.path.join(cfg.bcp.dir, name), "w") as f:
f.write(result)
@ -169,9 +152,6 @@ def save_cisco_bcp(host: str, name: str) -> None:
connection.disconnect()
log.info("disconnected from %r", name)
if result == "NetmikoTimeoutException":
log.warning("Timeout error %r", name)
return
elif result == "ReadTimeout":
log.warning("Timeout read config from %r", name)
return
with open(os.path.join(cfg.bcp.dir, name), "w") as f:

View File

@ -67,9 +67,6 @@ class ConfigNetDev:
domain: str = os.getenv("NET_DEV_DOMAIN")
pwd: str = os.getenv("NET_DEV_PWD")
ssh_port: int = config["net_dev"].getint("ssh_port")
read_timeout: int = config["net_dev"].getint("read_timeout")
delay_factor: int = config["net_dev"].getint("delay_factor")
debug: bool = config["net_dev"].getboolean("debug")
@dataclass

View File

@ -37,11 +37,8 @@ pattern:(?P<name>\S+) (?P<ip>\d+\.\d+\.\d+\.\d+) (?P<vendor>\S+) (?P<model>\S+)
start_at: 18:59
[net_dev]
debug: False
# Порт на который подключаться по ssh
ssh_port: 22
read_timeout: 30
delay_factor: 2
[log]
# Уровень логов в консоль

View File

@ -1,8 +1,10 @@
version: '3.3'
services:
net-backup:
image: git.sm8255082.ru/osnova/net-backup:1.1.0
restart: "no"
image: git.sm8255082.ru/osnova/net-backup:1.0.0
restart: always
volumes:
- ./logs:/app/logs
- ./config:/app/config
@ -10,9 +12,7 @@ services:
environment:
- TZ=Europe/Moscow
- NET_DEV_USER=admin
#- NET_DEV_DOMAIN=local
- NET_DEV_DOMAIN=local
- NET_DEV_PWD=password
#- GIT_USERNAME=git_user
#- GIT_TOKEN=bla-bla-lba
#- MAIL_USER=mail_user
#- MAIL_PWD=bla-bla-lba
- GIT_USERNAME=git_user
- GIT_TOKEN=bla-bla-lba