Fabric: يؤدي Connection.sudo () أحيانًا إلى تشغيل ThreadException / OSError بدلاً من AuthFailure

تم إنشاؤها على ١٨ فبراير ٢٠٢٠  ·  5تعليقات  ·  مصدر: 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

التعليق الأكثر فائدة

@ matt-hayden بعد ساعات من التصحيح لقد أنقذتني للتو من الانهيار العقلي. أود أيضًا أن أضيف أنني تلقيت هذا الخطأ فقط أثناء استخدام المعالجة المتعددة. العملية حتى لو كانت مجرد عملية واحدة.

ال 5 كومينتر

أعتقد أن ما قد تراه هو خطأ مختلف: لا أعتقد أنه وصل إلى مرحلة مصادقة sudo. أرى هذا في Python 2.7 ولكن فقط عندما تتم إعادة توجيه stdin من / dev / null. ربما حاول مرة أخرى مع pty=True ؟

@ matt-hayden بعد ساعات من التصحيح لقد أنقذتني للتو من الانهيار العقلي. أود أيضًا أن أضيف أنني تلقيت هذا الخطأ فقط أثناء استخدام المعالجة المتعددة. العملية حتى لو كانت مجرد عملية واحدة.

@ matt-hayden لقد رأيت هذه المشكلة في python 3.6 ، حيث يتم نقلها إلى حاوية Ubuntu 18.04 المحلية (مع تشغيل opensh sshd فيه). كان الأمر 'sudo' نفسه في نفس التكوين تمامًا يعمل بشكل صحيح بنسبة 99٪ من الوقت (رفع AuthFailure) ورفع خطأ OSE في نسبة 1٪ المتبقية.
لا أتذكر ما إذا تم تعيين pty على True.

على أي حال ، أنا لا أستخدم القماش الآن ، وليس لدي الوقت للتحقق من أن هذه المشكلة لا تزال قائمة. لذلك أعتقد أنني يجب أن أغلق القضية

حدث الخطأ ، مرة أخرى ونعم كنت أستخدم أيضًا حاوية عامل إرساء

@ luke-goddard ، إذا حدث ذلك داخل باراميكو (مثل traceback أعلاه) فربما يكون هذا أكثر ملاءمة كقضية في مشروع باراميكو.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات