Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash on Archlinux/Python3.4 when asking for password (Includes one line fix) #99

Open
GoogleCodeExporter opened this issue Sep 1, 2015 · 1 comment

Comments

@GoogleCodeExporter
Copy link

What steps will reproduce the problem?
1. Run pssh on Archlinux which uses python 3.4
2. Use the -A argument to have it ask for a password
3. Stare blindly at the stacktrace when it crashes

What is the expected output?
[1] 15:47:51 [SUCCESS] 20.0.0.8
And not to crash

What do you see instead?
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
Traceback (most recent call last):
  File "/usr/bin/pssh", line 118, in <module>
    do_pssh(hosts, cmdline, opts)
  File "/usr/bin/pssh", line 89, in do_pssh
    statuses = manager.run()
  File "/usr/lib/python3.4/site-packages/psshlib/manager.py", line 74, in run
    self.iomap.poll(wait)
  File "/usr/lib/python3.4/site-packages/psshlib/manager.py", line 255, in poll
    handler(fd, self)
  File "/usr/lib/python3.4/site-packages/psshlib/askpass_server.py", line 72, in handle_write
    bytes_written = conn.send(buffer)
TypeError: 'str' does not support the buffer interface

What version of the product are you using? On what operating system?
> pssh --version
2.3.1
> uname -a
Linux 3.14.1-1-ARCH #1 SMP PREEMPT Mon Apr 14 20:40:47 CEST 2014 x86_64 
GNU/Linux
> python --version
Python 3.4.0

Please provide any additional information below.
How to fix:
Edit: /usr/lib/python3.4/site-packages/psshlib/askpass_server.py
Find line 72: bytes_written = conn.send(buffer)
Add ".encode('UTF-8')" to "buffer" so it looks like this: bytes_written = 
conn.send(buffer.encode('UTF-8'))

Stackoverflow post I found via google that explained what the problem was: 
http://stackoverflow.com/questions/5471158/typeerror-str-does-not-support-the-bu
ffer-interface

Original issue reported on code.google.com by adaml...@currencysolutions.com on 16 May 2014 at 2:49

@GoogleCodeExporter
Copy link
Author

Same here (gentoo Linux, Python 3.4.2). Maybe it's better in general code to 
omit the encoding, using the default ('utf-8'). The following works nicely here:
 bytes_written = conn.send(buffer.encode())

Original comment by Bernd.Fe...@gmail.com on 14 Jan 2015 at 4:56

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant