fabric/fabric — Issue #510: 'Operation not supported by device' in getpass with parallel
Author: bitprophet
Created: 2011-12-19 04:26:18+00:00
State: open
Labels: 1.x, Bug, Core

I consistently get `Operation not supported by device` terminal errors when running `fab -P -H ,`.) Was trying to reproduce #493 but this appears totally unrelated.

Stacktrace:

```
» fab -P --linewise -H localhost,localhost:2202 -- ls 1
[localhost] Executing task ''
[localhost:2202] Executing task ''
[localhost:2202] run: ls
[localhost] run: ls
Process localhost:2202:
Traceback (most recent call last):
File "/Users/jforcier/.virtualenvs/fabric/lib/python2.5/site-packages/multiprocessing/process.py", line 237, in _bootstrap
self.run()
File "/Users/jforcier/.virtualenvs/fabric/lib/python2.5/site-packages/multiprocessing/process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "/Users/jforcier/Documents/Code/fabric/fabric/tasks.py", line 222, in inner
task.run(*args, **kwargs)
File "/Users/jforcier/Documents/Code/fabric/fabric/tasks.py", line 105, in run
return self.wrapped(*args, **kwargs)
File "/Users/jforcier/Documents/Code/fabric/fabric/main.py", line 664, in
state.commands[r] = lambda: api.run(remainder_command)
File "/Users/jforcier/Documents/Code/fabric/fabric/network.py", line 343, in host_prompting_wrapper
return func(*args, **kwargs)
File "/Users/jforcier/Documents/Code/fabric/fabric/operations.py", line 948, in run
return _run_command(command, shell, pty, combine_stderr)
File "/Users/jforcier/Documents/Code/fabric/fabric/operations.py", line 866, in _run_command
stdout, stderr, status = _execute(default_channel(), wrapped_command, pty,
File "/Users/jforcier/Documents/Code/fabric/fabric/state.py", line 326, in default_channel
chan = connections[env.host_string].get_transport().open_session()
File "/Users/jforcier/Documents/Code/fabric/fabric/network.py", line 74, in __getitem__
self[real_key] = connect(user, host, port)
File "/Users/jforcier/Documents/Code/fabric/fabric/network.py", line 260, in connect
password = prompt_for_password(text)
File "/Users/jforcier/Documents/Code/fabric/fabric/network.py", line 308, in prompt_for_password
new_password = getpass.getpass(password_prompt, stream)
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/getpass.py", line 32, in unix_getpass
old = termios.tcgetattr(fd) # a copy to save
error: (19, 'Operation not supported by device')
```

I seem to recall others mentioning this, probably on IRC, but I cannot find anything in the tracker about it so here this is.