我想在脚本中打开一个ssh session ,然后在本地执行其他命令,然后向已经打开的ssh session 发送一个命令。
具体来说,我想在 Linux 中运行一个 shell 脚本,它首先在后台打开一个 ssh session ,然后继续并将数据库置于只读模式,然后在打开的 ssh session 中运行一个命令,然后将数据库恢复为写入状态模式。 当我这样做时每一秒都很重要,实际上打开 ssh session 需要大约 80% 的时间,所以这就是为什么我不想打开 ssh session 并在数据库处于只读状态时向它发送命令模式。
我无权访问 expect
。
最佳答案
我认为连接多路复用是您的答案。
它的工作方式是,如果您有到同一台服务器的现有 ssh
连接,
例如在同一台机器上的另一个窗口中,
或当前登录 shell 中的后台 session ,
随后到同一服务器的 ssh
连接可以重用第一个,
显着加快启动时间,
就像你想要达到的那样。
将此添加到您的 ~/.ssh/config
以在连接到您的服务器时启用它:
Host yourserver
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
我到处都使用它,所以我使用 *
而不是 yourserver
。
试试这个:ssh
在一个窗口中连接到服务器,登录后,在另一个窗口中连接到同一服务器。第二个连接必须更快,因为它不需要验证和建立连接,因为它将重用已经存在的连接。
关于linux - 我想在脚本中打开一个ssh session ,然后在本地执行其他命令,然后向已经打开的ssh session 发送命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19442552/