invoke.exceptions.ThreadException:
Saw 1 exceptions within threads (OSError):
Thread args: {'kwargs': {'buffer_': ['[sudo] password: '],
'hide': False,
'output': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'>},
'target': <bound method Runner.handle_stderr of <fabric.runners.Remote object at 0x7f066e63a9e8>>}
Traceback (most recent call last):
File "/home/amezin/test/.venv/lib/python3.6/site-packages/invoke/util.py", line 233, in run
super(ExceptionHandlingThread, self).run()
File "/usr/lib/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "/home/amezin/test/.venv/lib/python3.6/site-packages/invoke/runners.py", line 750, in handle_stderr
buffer_, hide, output, reader=self.read_proc_stderr
File "/home/amezin/test/.venv/lib/python3.6/site-packages/invoke/runners.py", line 717, in _handle_output
self.respond(buffer_)
File "/home/amezin/test/.venv/lib/python3.6/site-packages/invoke/runners.py", line 884, in respond
self.write_proc_stdin(response)
File "/home/amezin/test/.venv/lib/python3.6/site-packages/invoke/runners.py", line 960, in write_proc_stdin
self._write_proc_stdin(data.encode(self.encoding))
File "/home/amezin/test/.venv/lib/python3.6/site-packages/fabric/runners.py", line 67, in _write_proc_stdin
return self.channel.sendall(data)
File "/home/amezin/test/.venv/lib/python3.6/site-packages/paramiko/channel.py", line 846, in sendall
sent = self.send(s)
File "/home/amezin/test/.venv/lib/python3.6/site-packages/paramiko/channel.py", line 801, in send
return self._send(s, m)
File "/home/amezin/test/.venv/lib/python3.6/site-packages/paramiko/channel.py", line 1198, in _send
raise socket.error("Socket is closed")
OSError: Socket is closed
Я думаю, что вы можете увидеть другую ошибку: я не думаю, что она доходит до фазы sudo auth. Я вижу это на Python 2.7, но только когда stdin перенаправляется с / dev / null. Может быть, попробовать еще раз с pty=True
?
@ matt-hayden После нескольких часов отладки вы только что спасли меня от психического срыва. Я также хотел бы добавить, что я получил эту ошибку только при использовании multiprocessing.Process, даже если это всего лишь один процесс.
@ matt-hayden Я видел эту проблему на python 3.6, ssh'ing в локальный контейнер Ubuntu 18.04 (с запущенным в нем openssh sshd). Та же самая команда sudo в точно такой же конфигурации работала правильно 99% времени (повышая AuthFailure) и вызывая OSError в оставшемся 1%.
Я не могу вспомнить, было ли для pty установлено значение True.
В любом случае, сейчас я не использую ткань, и у меня нет времени проверить, сохраняется ли эта проблема. Думаю, мне следует закрыть вопрос
Ошибка произошла снова, и да, я также использовал контейнер докеров
@ luke-goddard, если это произошло в paramiko (как в случае с трассировкой выше), то, возможно, это более уместно в качестве проблемы в проекте paramiko.
Самый полезный комментарий
@ matt-hayden После нескольких часов отладки вы только что спасли меня от психического срыва. Я также хотел бы добавить, что я получил эту ошибку только при использовании multiprocessing.Process, даже если это всего лишь один процесс.