使用shell脚本在远程服务器上执行命令[重复]

Posted

技术标签:

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

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

【问题讨论】:

嗯,您当然可以在本地脚本中执行对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

您可能需要调整选项。

【讨论】:

以上是关于使用shell脚本在远程服务器上执行命令[重复]的主要内容,如果未能解决你的问题,请参考以下文章

牛逼,远程执行Linux脚本和命令

大技霸教你远程执行Linux脚本和命令

大技霸教你远程执行Linux脚本和命令

使用 shell 脚本在远程机器上执行多个命令

本地shell脚本中ssh到远程服务器并执行命令

JenkinsJenkins配置从节点,实现远程主机调用功能