Я использую paramiko
и python-3.7
для подключения к удаленной машине RedHat и запуска на нем скрипта.
Мой python
код (он внутри метода класса с представленной self.logger
)выглядит так:
import paramiko
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(server_name, port=22, username=login, password=password, timeout=3)
(_, stdout, stderr) = client.exec_command('/tmp/some_script.sh')
for line in stderr:
self.logger.error(line)
Если исполняемый скрипт /tmp/some_script.py
не существует, то в моем журнале я получаю следующую строку:
2019-04-16 18:03:05,528:ERROR: bash: /tmp/some_script.sh: ▒▒▒ ▒▒▒▒▒▒ ▒▒▒▒▒ ▒▒▒ ▒▒▒▒▒▒▒▒
whileесли я войду на сервер и попытаюсь выполнить команду, она вернет кириллический текст:
-bash: /tmp/some_script.sh: Нет такого файла или каталога
Сообщение означает "Нет такого файла или каталога"
Я попытался заменить self.logger.error(line)
строка с self.logger.error(line.encode('utf-8'))
, но вывод выглядит так:
2019-04-16 18:22:02,208:ERROR: b'bash: /tmp/some_script.sh: \xd0\x9d\xd0\xb5\xd1\x82 \xd1\x82\xd0\xb0\xd0\xba\xd0\xbe\xd0\xb3\xd0\xbe \xd1\x84\xd0\xb0\xd0\xb9\xd0\xbb\xd0\xb0 \xd0\xb8\xd0\xbb\xd0\xb8 \xd0\xba\xd0\xb0\xd1\x82\xd0\xb0\xd0\xbb\xd0\xbe\xd0\xb3\xd0\xb0\n'
Чего мне не хватает?Я хочу, чтобы вывод был кириллическим, как из консоли.