#!/usr/bin/env python3 # Это пример кода сделанный фрилансером для управления оборудованием (работа не доделана), но не проверенный мой. import time import pexpect import logging from config import config def send_pass(connection, passwd): connection.sendline(passwd) connection.expect('>') def get_auth_ssh(ip, login, passwd): logging.info('Подключение к %s'.format(ip)) logging.debug('Логин: "{}", пароль: "{}"'.format(login, passwd)) connect_string = '/usr/bin/ssh {}@{}'.format(login, ip) try: connection = pexpect.spawn(command=connect_string, encoding='utf-8', maxread=1000000) connection.sendline('/usr/bin/ssh {}@{}'.format(login, ip)) index = connection.expect( ['Are you sure you want to continue connecting (yes/no/[fingerprint])?', '[Pp]assword', '>']) if 0 == index: """Подключение первый раз к этому устройству""" connection.sendline('yes') index = connection.expect(['>', '[Pp]assword']) if 1 == index: send_pass(connection, passwd) else: if 1 == index: """Подключение 2 и более раз""" send_pass(connection, passwd) return connection except Exception: logging.info(connection) def get_log(connection, count): connection.sendline('\n') connection.expect('>') connection.sendline('log print\r') time.sleep(2) connection.expect('>') buffer = connection.buffer.split('\r\n\r') print("buffer = '{}'".format(buffer)) log = buffer[1].split(' \r\n') for s in log: s = s.replace('\r\n', '') return log[-count:] def main(): logging.basicConfig(level=logging.DEBUG, filename='log/app.log', format='%(asctime)s - %(message)s') logging.info('Программа запущена') username = config['microtik']['username'] password = config['microtik']['password'] ip = config['microtik']['ip'] ssh = get_auth_ssh(ip, username, password) log = get_log(connection=ssh, count=30) for s in log: print(s) logging.info('Программа остановлена.') if '__main__' == __name__: main()