我想在脚本中打开一个ssh会话,然后在本地执行其他命令,然后将命令发送到已经打开的ssh会话

时间:2013-10-18 05:54:37

标签: linux ssh

我想在脚本中打开一个ssh会话,然后在本地执行其他命令,然后将命令发送到已经打开的ssh会话。

具体来说,我想在Linux中运行一个shell脚本,第一个在后台打开一个ssh会话然后继续并将数据库置于只读模式,然后在打开的ssh会话中运行一个命令,然后将数据库重新写入模式。 当我这样做时,每秒都会计算,并且实际打开ssh会话大约需要80%的时间,这就是为什么我不想打开ssh会话并在数据库处于只读状态时向它发送命令的原因模式。

我无法访问expect

1 个答案:

答案 0 :(得分:1)

我认为连接多路复用是你的答案。

它的工作方式是,如果您与同一服务器之间存在ssh连接, 例如,在同一台机器上的另一个窗口中, 或当前登录shell中的后台会话, 与同一服务器的后续ssh连接可以重用第一个, 显着加快启动时间, 就像你想要达到的目标一样。

将此添加到~/.ssh/config以在连接到服务器时启用它:

Host yourserver
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p

我在任何地方都使用此功能,因此我使用yourserver代替*

在您登录后,在一个窗口中对服务器执行此操作:ssh,ssh到另一个窗口中的同一服务器。第二个连接必须更快,因为它不需要进行身份验证和建立连接,因为它将重用已经存在的连接。