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
Creo que lo que puede estar viendo es un error diferente: no creo que esté llegando a la fase de autenticación de sudo. Veo esto en Python 2.7, pero solo cuando stdin se redirige desde / dev / null. ¿Quizás intentarlo de nuevo con pty=True
?
@ matt-hayden Después de horas de depuración, acabas de salvarme de un colapso mental. También me gustaría agregar que solo recibí este error mientras usaba multiprocesamiento.Proceso incluso si es solo un proceso.
@ matt-hayden He visto este problema en python 3.6, ssh'ing en el contenedor local de Ubuntu 18.04 (con openssh sshd ejecutándose en él). El mismo comando 'sudo' en exactamente la misma configuración funcionaba correctamente el 99% del tiempo (aumentando AuthFailure) y aumentando OSError en el 1% restante.
No recuerdo si pty se estableció en True.
De todos modos, no estoy usando fabric ahora y no tengo tiempo para verificar que este problema aún está presente. Así que supongo que debería cerrar el tema.
El error sucedió, nuevamente y sí, también estaba usando un contenedor docker
@ luke-goddard, si ocurrió dentro de paramiko (como el rastreo anterior), entonces tal vez esto sea más apropiado como un problema en el proyecto paramiko.
Comentario más útil
@ matt-hayden Después de horas de depuración, acabas de salvarme de un colapso mental. También me gustaría agregar que solo recibí este error mientras usaba multiprocesamiento.Proceso incluso si es solo un proceso.