Comments (7)
Hello! Thanks for the suggestion. I've never used the sock
argument, but from a quick read it looks like a socket
-like argument -- that is, the interface isn't really specific to paramiko, but is whatever subset of the socket
interface that Paramiko uses. So, it's not entirely implausible for people to provide their own implementation.
Perhaps there's a way we can get the simplicity of option 1, to keep the interaction with Paramiko simple (and more likely to be correct), with the user-friendliness of option 3. Specifically, what about something like (naming needs more thought):
spur.SshShell(sock=spur.proxy.ssh_command(username=...))
Where spur.proxy.ssh_command(...)
creates the instance of ProxyCommand
that paramiko expects?
from spur.py.
Sure sounds nice... i'll change my PR to have a new sock= parameter to which you can feed anything, that would unblock me
and in a second pass the ssh_command helper could be added
from spur.py.
PR has been updated
from spur.py.
Okay here is some interesting news :
Paramiko's proxy command is NOT python 3 compatible but it's only partially part of paramiko, because as a user you could give anything that is socket like to sock=, there is an issue about that : paramiko/paramiko#673 which contains a PR with a python 3 comptable version of ProxyCommand.
So to add the proxy command building helper in spur i would need a test, that both work in py2 and py3, py2 would use the ProxyCommand (stock) and the py3 would use a copy made from the PR.
So we could venture into creating a new ProxyCommand that works for both version and include it in your package, but i fear that would include some "if py2 then... if py3 then" in the code which is not the most elegant.
Or we could push to paramiko but that looks hard, there's 65 PR open and some are a years old.
My suggestion : leave it with the sock= i already proposed and no builders, so users such as me can have their own fixed proxy command that they use in their project that may not require py2 compatibility
from spur.py.
I think your suggestion makes sense: trying to provide builders is probably out of the scope of this library given that Paramiko itself doesn't provide an implementation of ProxyCommand
that works across Python 2 and 3. Thanks again for the pull request!
from spur.py.
Wonderful, thanks for your time, keep up the good work!
from spur.py.
No problem at all, thanks for the code and accommodating my requests!
from spur.py.
Related Issues (20)
- Add ability to specify pty width/height/term
- check_call and check_output HOT 4
- get/put/read_text/read_bytes/write_text/write_bytes/mkdir HOT 10
- send_signal() only applies to parent process HOT 2
- Concrete Minimal Shell Implementation HOT 10
- Add spur to awesome-python HOT 1
- Shell.run() Errors on sudo sed command HOT 2
- Spur fails with message "no handlers could be found for logger "paramiko.transport" HOT 3
- spur fails to connect but with same configuration paramiko works HOT 3
- test failures with python 3.8 HOT 4
- spur.results.RunProcessError: return code: 127 HOT 3
- Add spur to conda-forge HOT 1
- paramiko.ssh_exception.SSHException: Channel closed.
- ~/.ssh/config is being ignored
- stderr output: b'sudo: sorry, you must have a tty to run sudo\n' HOT 1
- Unimplemented method HOT 8
- 0.3.22: test suite uses outdated `nose` HOT 1
- Support for later paramiko HOT 2
- Can't run windows commands HOT 2
- [Question] SSH keepalive
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from spur.py.