0

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

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

我无权访问expect.

4

1 回答 1

1

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

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

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

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

我在任何地方都使用它,所以yourserver我不使用*.

试试这个:ssh在一个窗口中的服务器,登录后,在另一个窗口中 ssh 到同一服务器。第二个连接必须更快,因为它不需要验证和建立连接,因为它将重用已经存在的连接。

于 2013-10-18T06:06:05.150 回答