Убрать вывод цвета 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)))
...