21.11.2024

Все еще бэкапите конфиги cisco с помощью TFTP? Тогда мы идем к вам!

Недавно начал работать с этими коммутаторами и встал вопрос резервного копирования конфигов. Казалось бы у cisco с этим все прекрасно, ведь есть archive и kron, но не тут-то было

Не буду ходить вокруг да около, но мне не понравилась перспектива копирования конфига по TFTP-протоколу и я начал искать возможность засекурить это дело. Нашел SCP, но он не понимал моих паролей. Вообщем, я пошел другим путем и решил собирать конфиги на linux-сервер и для этого написал следующий скрипт на языке Python 3.5

#!/usr/bin/python3.5

import os
import syslog
import subprocess
from datetime import datetime
from pathlib import Path

devices={
    'sw-dev1': {'ip':'10.10.10.1', 'username':'backup', 'password':'secret-pass'},
    'sw-dev2': {'ip':'10.10.10.2', 'username':'backup', 'password':'secret-pass'},
}

for dev_name, dev_info in devices.items():
    dt = datetime.now()
    cdate = dt.strftime("%Y-%m-%d-%H:%M:%S")
    cym = dt.strftime("%Y-%m")

    syslog.syslog("[BACKUP-CISCO] Started backuping %s with IP %s" % (dev_name, dev_info['ip']))

    code = subprocess.run("sshpass -p '%s' scp %s@%s:config.text /tmp/%s >> /var/log/backup-cisco.log" % (dev_info['password'], dev_info['username'], dev_info['ip'], dev_name), shell=True)
    if code.returncode == 0:
        Path("/var/backups/cisco/config/%s/" % (cym)).mkdir(parents=True, exist_ok=True)
        os.rename("/tmp/%s" % (dev_name), "/var/backups/cisco/config/%s/%s-%s" % (cym, dev_name, cdate))
        syslog.syslog("[BACKUP-CISCO] Backuping %s is OK. Result file: %s-%s" % (dev_name, dev_name, cdate))
    else:
        syslog.syslog(syslog.LOG_ERR, "[BACKUP-CISCO] Backuping %s is NOT OK!" % (dev_name))

На железках необходимо создать юзер 15-го уровня для доступа к конфигу и включить scp:

username backup privilege 15 secret 0 secret-pass
ip scp server enable

На машине, где будете запускать скрипт, установите пакет

sshpass

Всем удачного Дня Системного Администратора!

Добавить комментарий