Python中的并行SSH
我想知道在Python中处理并行SSH连接的最佳方法是什么。
我需要打开几个SSH连接,让它们在后台运行,并以交互或定时批处理的方式发送命令。
使用paramiko库可以做到这一点吗?如果每个连接都不需要启动一个不同的SSH进程,那就太好了。
谢谢。
6 个回答
1
根据paramiko的API文档,似乎可以先建立一个SSH连接,然后在这个连接上面再创建很多SSH隧道,数量随便你想要。常见的SSH客户端(比如openssh)通常会在后台自动处理这些事情,如果已经有一个连接打开的话。
3
可以看看Twisted里有哪些选项。例如,Twisted.Conch页面上提到:
http://twistedmatrix.com/users/z3p/files/conch-talk.html
跟OpenSSH不同,Conch服务器不会为每个进来的连接创建一个新的进程。相反,它使用Twisted的反应器来同时处理多个连接。
3
是的,你可以用paramiko来实现这个功能。
如果你只连接一个服务器,你可以通过一个连接同时运行多个通道。如果你要连接多个服务器,可以在不同的线程中启动多个连接。这样就不需要管理多个进程,虽然你也可以用多进程模块来替代线程模块,效果是一样的。
我有一段时间没关注twisted conch了,但看起来它又在更新,这挺不错的。我不能给你两个之间的详细功能比较,但我觉得paramiko更容易上手。使用twisted需要花费更多的精力,但如果你还要做其他网络编程,可能会很值得。