рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!
рдпрд╣ рд╡рд┐рд╖рдп рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛, рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рддрд╛ рд╣реИ:
- рдорд┐рдХрд░реЛрдЯрд┐рдХ рд╕реЗ рд╕рдХреНрд░рд┐рдп рдЦрд╕рдЦрд╕ тАЛтАЛрдкрддреЗ рдХреА рд╕реВрдЪреА рдХреЛ рдЕрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ
- рдлреЛрди рдХреЗ рдЦрд╕рдЦрд╕ тАЛтАЛрдЖрдИрдкреА рдкрддреЗ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ
- рдЙрдиреНрд╣реЗрдВ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдПрдХ рдЕрд▓рдЧ рдкреВрд▓ рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ
рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ, рдХреГрдкрдпрд╛ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рд╕реНрд╡рд╛рдЧрдд рдХрд░реЗрдВред
рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдкрд╛рдпрдерди рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ (рдкрд╣рд▓реА рдкреАрдПрд▓ рдХреЗ рд░реВрдк рдореЗрдВ), рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд▓рд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЖрдЧреЗ рдореИрдВ рдЗрд╕рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдПрдХ рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред
import telnetlib import time import ftplib import logging class MacToPool(): def get_export_file_from_mikrotik(self): host = "IP " user = "_" password = "_" command_1 = '/ip dhcp-server lease print file=lease_file' command_2 = 'quit' tn = telnetlib.Telnet(host) 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'>') ftp = ftplib.FTP('IP ') ftp.login('_', '_') try: ftp.delete('lease_file.txt') ftp.delete('script_mac_phone.rsc') logging.basicConfig(filename='log.txt', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logging.info(" : lease_file.txt, script_mac_phone.rsc") except Exception: logging.basicConfig(filename='log.txt', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logging.info(" . .") time.sleep(1) tn.write(command_1.encode('UTF-8') + b"\r\n") time.sleep(1) logging.basicConfig(filename='log.txt', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logging.info(" .") tn.read_until(b'>') tn.write(command_2.encode('UTF-8') + b"\r\n") time.sleep(1) f = open('lease_file.txt', "wb") ftp.retrbinary("RETR lease_file.txt", f.write) logging.basicConfig(filename='log.txt', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logging.info(" ") lst_mac_phone = []
Get_export_file_from_mikrotik () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдореИрдВ рдорд┐рдХрд░реЛрдЯрд┐рдХ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ / ip dhcp-server рдкрдЯреНрдЯреЗ рдкреНрд░рд┐рдВрдЯ рдлрд╝рд╛рдЗрд▓ = рдкрдЯреНрдЯрд╛_рдлрд╛рдЗрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдореИрдВ рд╕рднреА рд╕рдХреНрд░рд┐рдп рдЦрд╕рдЦрд╕ тАЛтАЛрдкрдЯреНрдЯреЛрдВ рдХреЛ рдкрдЯреНрдЯреЗ_рдлреНрд▓реИрдк рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд░реНрдХрд┐рдВрдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдлрд╝рдЯреАрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдпрд╣рд╛рдБ рднреА рдореИрдВ рдЦрд╕рдЦрд╕ тАЛтАЛрдХреЗ рдкрддреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рд▓реА рд╕реВрдЪреА рдмрдирд╛рддрд╛ рд╣реВрдБред рдЕрдЧрд▓рд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣реИ
def get_all_mac(self): self.get_export_file_from_mikrotik(MacToPool) text = open('lease_file.txt').readlines() self.all_mac = [] for line in text: lst_value = line.split(" ") for symbol in lst_value: if len(symbol) == 17: self.all_mac.append(symbol) return self.all_mac
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрдЯреНрдЯрд╛_ рдлрд╝рд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, get_all_mac рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдореБрдЭреЗ рд╕рднреА рд╕рдХреНрд░рд┐рдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдХреЗрд╡рд▓ рдЦрд╕рдЦрд╕ тАЛтАЛрдкрддреЗ рд╡рд╛рд▓реА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓реАред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде, рдореИрдВ рд╕рднреА рдЦрд╕рдЦрд╕ тАЛтАЛрдкрддреЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реВрдВ, рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдлреЛрди рдХрд╛ рдЦрд╕рдЦрд╕ тАЛтАЛрдкрддрд╛ рд╣реИ):
def find_mac_phone(self): self.get_all_mac(MacToPool) mac_phone = open("macphone.txt", "w") for mac_address in self.all_mac: if mac_address[0:8] == "00:15:65": mac_phone.write(mac_address + "\n") self.lst_mac_phone.append(mac_address) logging.basicConfig(filename='log.txt', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logging.info(" MAC ")
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрджреЗрд╢ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░реЗрдВрдЧреЗ:
Make_mikrotik_script () рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдорд┐рдХрд░реЛрдЯрд┐рдХ рдкреВрд▓ рдореЗрдВ рдкреЙрдкрдкреАрдЬрд╝ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
Upload_to_ftp () рдлрд╝рдВрдХреНрд╢рди рд╕рдорд╛рдкреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдорд┐рдХрд░реЛрдЯрд┐рдХ рдПрдлрд╝рдЯреАрдкреА рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рдФрд░ рдЕрдВрддрд┐рдо рдлрд╝рдВрдХреНрд╢рди рд░рд╛рдЙрдЯрд░ рдкрд░ рд╕реАрдзреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИред
def make_mikrotik_script(self):
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛, рд▓реЙрдЧрд┐рдВрдЧ рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рднреА рдлреЛрди рдПрдХ рдЕрд▓рдЧ рдкреВрд▓ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЕрдм, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рднреА рдореЗрд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдкреАрдПрд╕ рдкреНрд░рдпреБрдХреНрдд рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг 3.3