【问题标题】:execute commands on remote server using shell script [duplicate]使用shell脚本在远程服务器上执行命令[重复]
【发布时间】:2017-09-26 17:42:59
【问题描述】:

我有一个部署脚本位于构建服务器上。每次我需要生成构建时,我都需要使用ssh 登录到服务器,然后触发部署脚本。 我设法生成了公钥/私钥,这样我就不需要输入密码来登录构建服务器。但我仍然需要登录并运行部署脚本。 有没有一种方法可以自动登录,在构建服务器上执行部署脚本,然后从一个本地脚本中退出。如何做到这一点

【问题讨论】:

  • 嗯,您当然可以在本地脚本中执行对ssh 的调用,然后交出代码或远程文件以远程执行。这是有据可查的,你可以在互联网上找到无数的例子。
  • 有人回答了您的问题,还是您也想自动登录?如果是,这些标准是什么(例如时间或事件)?

标签: bash shell ssh


【解决方案1】:

您可以使用管道(假设您使用的是 *nix 操作系统):

echo "your --command --here" | ssh user@host

【讨论】:

    【解决方案2】:

    只需在一行中执行ssh <HOST> <COMMAND>。如果你已经可以 使用密钥登录,您无需输入密码。示例:

    $ ssh localhost 'echo hi'
    hi
    

    这个<COMMAND>同步运行的。这意味着ssh 不会 完成,直到远程服务器上的<COMMAND> 运行完成。看看你自己:

    $ ssh localhost 'sleep 10'
    

    此命令将等待 10 秒,在完成之前您将无法键入新命令。

    【讨论】:

    • 那就是同步吧。
    • 抱歉,我不明白 - 这是一个问题吗?
    • @Pradeep 最后没有& 的所有内容都是同步的。
    • 您在回答中提到它是异步的。我认为它是同步的,因为在远程服务器上的命令完成之前您将无法运行任何命令。
    • 没错。只需在COMMAND 之后添加& 即可使其异步
    【解决方案3】:

    通常只是

    ssh buildserver /path/to/build.sh
    

    您可能需要调整选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-24
      • 2020-01-16
      • 2011-04-26
      • 2016-07-24
      • 2017-11-24
      • 2014-02-05
      • 1970-01-01
      • 2021-07-29
      相关资源
      最近更新 更多