使用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脚本在远程服务器上执行命令[重复]的主要内容,如果未能解决你的问题,请参考以下文章