【问题标题】:I want to open an ssh session in a script, then perform other commands locally, then send a command to the already opened ssh session我想在脚本中打开一个 ssh 会话,然后在本地执行其他命令,然后向已经打开的 ssh 会话发送命令
【发布时间】:2013-10-18 05:54:36
【问题描述】:

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

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

我无权访问expect

【问题讨论】:

    标签: linux ssh


    【解决方案1】:

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

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

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

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

    我到处都用这个,所以我用*代替yourserver

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      • 2018-10-06
      • 1970-01-01
      • 2012-01-21
      • 2013-11-27
      相关资源
      最近更新 更多