[英]ssh multiplexing & python: Will it work like this?
前提条件:
一般来说,对于单个“单一动作调用”,我只需使用subprocess.Popen
进行本机 ssh 调用,它工作正常。
但是对于多个后续动态调用,我不想为每个命令创建一个新的 ssh 连接,即使远程主机可能允许它。 我想到了以下解决方案:
1) Configure my local ssh on Ubuntu to use multiplexing, so as long as a connection is open, it is used instead of creating a new one ( https://www.admin-magazin.de/News/Tipps/Mit-SSH -Multiplexing-schneller-einloggen (对不起,德语))
2)通过在正在运行的后台线程中打开它来创建 ssh 连接,除了必要时可能会“保持活动”或类似的事情之外,它本身什么都不做,并保持连接打开直到它关闭(即通过停止线程)。 ( http://sebastiandahlgren.se/2014/06/27/running-a-method-as-a-background-thread-in-python/ )
3) 仍然通过subprocess.Popen
简单地执行 ssh 调用,但由于 ssh 多路复用配置,现在自动使用打开的连接。
这应该有效,还是存在谬误警报?
(*)我不想要的:
您提出的建议很好,但您甚至不需要保持 ssh 连接在后台线程中运行。 如果您配置ControlMaster
(用于重用现有连接)和ControlPerist
(用于在所有其他连接已关闭时保持主连接打开),那么新的ssh
连接将继续使用共享连接(只要它们发生在ControlPersist
超时之前)。
这意味着如果您在代码外部设置ControlMaster
配置(例如,在~/.ssh/ssh_config
中),您的代码甚至不需要知道配置:它可以继续正常调用ssh
,并且ssh
将负责重用连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.