User Tools

Site Tools


оборудования_mikrotik

Python backup mikrotik

import telnetlib
import time
import datetime
import logging
 
###делаем бэкап конфигурации микротика###
 
 
def mikrotik_make_backup():
    host = "10.10.10.14" # ip адрес нашего mikrotik
    user = "username" # логин для подключения к mikrotik
    password = "P@$$w0rd" # пароль для подключения
    dn = datetime.datetime.today() # получаем дату
    cur_year = str(dn.year)
    cur_month = str(dn.month)
    cur_day = str(dn.day)
    date_now = cur_day + cur_month + cur_year
    cur_hour = str(dn.hour)
    cur_minutes = str(dn.minute)
    cur_time = cur_hour + cur_minutes
    # команда для создания бэкапа на микротике
    command_1 = '/system backup save name=mikrotik' + date_now + "-" + cur_time 
    command_2 = 'quit'
    tn = telnetlib.Telnet(host) # подключаемся к микротик по telnet
    tn.read_until(b"Login: ")
    tn.write(user.encode('UTF-8') + b"\n")
    tn.read_until(b"Password: ")
    tn.write(password.encode('UTF-8') + b"\n")
    tn.read_until(b'>')
    tn.write(command_1.encode('UTF-8') + b"\r\n")
    logging.basicConfig(filename='log.txt', level=logging.INFO,
                        format='%(asctime)s - %(levelname)s - %(message)s')
    logging.info("backup done")
    time.sleep(5)
    tn.read_until(b'>')
    tn.write(command_2.encode('UTF-8') + b"\r\n")
    time.sleep(5)
    upload_ftp()
 
 
def upload_ftp():
    import ftplib
    import os
    import os.path
 
    # подключаемся к микротик по FTP, вместо ip_adress_mikrotik вводим адрес нашего устройства
    ftp = ftplib.FTP('10.10.10.14') 
    ftp.login('user', 'P@$$word') # вместо user и P@$$word вводим наши логин и пароли
    listing = []
    lst_for_delete = []  # лист для списка существуующих бэкапов
    ftp.retrlines('LIST', listing.append)
    for i in range(len(listing)):
        words = listing[i].split(None, 8)
        filename = words[-1].lstrip()
        string = 'mikrotik'
        count = filename.count(string)
        if count == 1:
            backup_name = filename
            lst_for_delete.append(backup_name)
            local_filename = os.path.join(r"C:\path\to \dir", backup_name)
            lf = open(local_filename, "wb")
            ftp.retrbinary("RETR " + filename, lf.write, 8 * 1024)
            logging.basicConfig(filename='log.txt', level=logging.INFO,
                                format='%(asctime)s - %(levelname)s - %(message)s')
            logging.info(backup_name + " copied to server")
    if len(lst_for_delete) > 15:
        ftp.delete(lst_for_delete[-1])  # на микротике сохраняется только последние 15 бэкапов
        logging.basicConfig(filename='log.txt', level=logging.INFO,
                            format='%(asctime)s - %(levelname)s - %(message)s')
        logging.info("File Removed: " + lst_for_delete[-1])
 
 
mikrotik_make_backup()
оборудования_mikrotik.txt · Last modified: 2023/04/06 10:28 by 127.0.0.1