Fabric: Connection.sudo () às vezes levanta ThreadException / OSError em vez de AuthFailure

Criado em 18 fev. 2020  ·  5Comentários  ·  Fonte: fabric/fabric

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

Comentários muito úteis

@matt-hayden Depois de horas de depuração, você acabou de me salvar de um colapso mental. Também gostaria de acrescentar que só recebi esse erro ao usar multiprocessing.Process, mesmo que seja apenas um processo.

Todos 5 comentários

Acho que o que você deve estar vendo é um erro diferente: não acho que esteja chegando à fase de autenticação do sudo. Estou vendo isso no Python 2.7, mas apenas quando stdin é redirecionado de / dev / null. Talvez tente novamente com pty=True ?

@matt-hayden Depois de horas de depuração, você acabou de me salvar de um colapso mental. Também gostaria de acrescentar que só recebi esse erro ao usar multiprocessing.Process, mesmo que seja apenas um processo.

@ matt-hayden Eu vi esse problema no python 3.6, ssh'ing no contêiner Ubuntu 18.04 local (com o openssh sshd rodando nele). O mesmo comando 'sudo' em exatamente a mesma configuração estava funcionando corretamente 99% do tempo (aumentando AuthFailure) e aumentando OSError no 1% restante.
Não consigo me lembrar se pty foi definido como True.

De qualquer forma, não estou usando tecido agora e não tenho tempo para verificar se esse problema ainda está presente. Então, acho que devo encerrar o problema

O erro aconteceu, novamente e sim, eu também estava usando um contêiner docker

@ luke-goddard, se ocorreu dentro do paramiko (como o traceback acima) então talvez seja mais apropriado como um problema no projeto paramiko.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

acdha picture acdha  ·  4Comentários

omzev picture omzev  ·  6Comentários

bitprophet picture bitprophet  ·  6Comentários

jmcgrath207 picture jmcgrath207  ·  5Comentários

haydenflinner picture haydenflinner  ·  5Comentários