Fabric: Connection.sudo() lève parfois ThreadException/OSError au lieu de AuthFailure

Créé le 18 févr. 2020  ·  5Commentaires  ·  Source: 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

Commentaire le plus utile

@matt-hayden Après des heures de débogage, vous venez de me sauver d'une dépression nerveuse. Je voudrais également ajouter que je n'ai eu cette erreur qu'en utilisant multiprocessing.Process même s'il ne s'agit que d'un seul processus.

Tous les 5 commentaires

Je pense que ce que vous pourriez voir est une erreur différente : je ne pense pas que cela arrive à la phase sudo auth. Je vois cela sur Python 2.7 mais uniquement lorsque stdin est redirigé depuis /dev/null. Peut-être réessayer avec pty=True ?

@matt-hayden Après des heures de débogage, vous venez de me sauver d'une dépression nerveuse. Je voudrais également ajouter que je n'ai eu cette erreur qu'en utilisant multiprocessing.Process même s'il ne s'agit que d'un seul processus.

@matt-hayden J'ai vu ce problème sur python 3.6, ssh dans le conteneur local Ubuntu 18.04 (avec openssh sshd en cours d'exécution). La même commande 'sudo' dans exactement la même configuration fonctionnait correctement 99% du temps (levant AuthFailure) et soulevant OSError dans les 1% restants.
Je ne me souviens pas si pty était défini sur True.

Quoi qu'il en soit, je n'utilise pas de tissu actuellement, et je n'ai pas le temps de vérifier que ce problème est toujours présent. Donc je suppose que je devrais clore le sujet

L'erreur s'est encore produite et oui, j'utilisais également un conteneur docker

@luke-goddard , si cela s'est produit dans paramiko (comme le retraçage ci-dessus), cela est peut-être plus approprié comme problème dans le projet paramiko.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

omzev picture omzev  ·  6Commentaires

peteruhnak picture peteruhnak  ·  4Commentaires

yuvadm picture yuvadm  ·  5Commentaires

shadyabhi picture shadyabhi  ·  5Commentaires

bitprophet picture bitprophet  ·  6Commentaires