оборудования_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