#!/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()