Убрать вывод цвета bash из интерфейса QT (работа с ssh)

Приложение выводит и сохраняет в файл логи звонка из ELTEX.

Сделал интерфейс приложения в QT. По SSH соединение через paramiko.

Вот функция класса, которая выводит в интерфейс лог:

   def foundShortID(self):
    shortID = self.shortID.text()
    domain = self.foundDomainSSH.text()
    ip = self.domainSSH.text()
    user = self.loginSSH.text()
    password = self.passwordSSH.text()
    port = 8023
    send_mes = 'domain/' + domain + '/trace/show --Te ' + shortID + ' --payload\n'
    try:
        client = paramiko.SSHClient()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        client.connect(
            hostname=ip,
            username=user,
            password=password,
            port=port,
            look_for_keys=False)
        with client.invoke_shell() as ssh:
            ssh.send(send_mes)
            time.sleep(0.5)
            '''ssh.recv(120).decode('utf8')'''
            message_to_ui = ssh.recv(10000000).decode("utf-8")
            file = open('log-' + time.strftime("%Y-%m-%d-%H.%M.%S", time.localtime()) + '.txt', 'w')
            file.write(''.join(message_to_ui))
            file.close()
    except:
        message_to_ui = "Подключение не удалось"
    print(message_to_ui)
    self.output_message(message_to_ui)

Проблема в том что, в консоли вывод нормальный:

nd@[mycelium1@ecss1#ECSS 010286]:/$ domain/gravitel.aicall.ru/trace/show --Te 8da595bc --payload
<<<<<<<<<<<<<<<<<<<<<<<
1. in/message/ct_service_cp: 18448 17:00:08:896 (2020/07/05 20:00:08.896)
body:
  {msg,<<"0639ec6d8da595bc">>,<<"acp">>,<<"bridge:gravitel.aicall.ru">>,4063479645706728497,
  {gate_cp,'ssw.aicall.ru',service_cp,<<"0639ec6d8c750bef">>,<<"0639ec6d8da595bc">>,undefined}

А вывод в приложении QT с доп символами (квадрат это стрелка влево):

[31m[1mnd@[mycelium1@ecss1#ECSS 010286]:/$ [0mdomain/gravitel.aicall.ru/trace/show --Te 8da595bc --payload
    [0m<<<<<<<<<<<<<<<<<<<<<<<[0m
    [0m1. in/message/ct_service_cp: 18448 17:00:08:896 (2020/07/05 20:00:08.896)[0m
    [0mbody:[0m
    [0m  {msg,<<"0639ec6d8da595bc">>,<<"acp">>,<<"bridge:gravitel.aicall.ru">>,4063479645706728497,
      {gate_cp,'ssw.aicall.ru',service_cp,<<"0639ec6d8c750bef">>,<<"0639ec6d8da595bc">>,undefined},

Как избавиться от вывода лишних символов?


Ответы (1 шт):

Автор решения: Даниил Чижевский

Предлагаю либо покопаться в документации (я там, правда, ничего не нашёл), либо удалить из вывода все конструкции вида [XXXm:

import re

...

        file.write(re.sub('\[\d+m', '', ''.join(message_to_ui)))

...

→ Ссылка