【问题标题】:How to run a script from local on remote but at some point continue running the script on the local server?如何从远程本地运行脚本,但在某些时候继续在本地服务器上运行脚本?
【发布时间】:2019-10-25 17:33:44
【问题描述】:

我需要运行一个 bash 脚本,该脚本从 server-1 获取一些参数,然后从我运行脚本的本地服务器获取一些参数

ssh user@server-1 bash -s <script.sh

然后我需要使用这些参数在我的本地服务器上执行各种命令,并且还涉及 server-2。但是由于

,该脚本仍将在 server-1 上运行
ssh user@server-1 bash -s <script.sh

也许我可以使用 2 个脚本,但我希望它们只在本地服务器上。并且在 SSH 之后在脚本中添加更多命令似乎不起作用。

【问题讨论】:

  • script.sh 由运行远程的 bash 进程运行,这意味着当前的 bash 进程派生(并等待其终止)一个 ssh 进程,该进程正在等待远程进程的终止远程进程没有'不知道首先调用的进程,下一个命令必须放在 ssh 命令之后,该命令必须在 script.sh 之外的另一个脚本中,如果所有应该放在一个脚本中,也许应该使用函数来隔离进程和一个添加逻辑以确定上下文并执行正确的流程

标签: bash ssh local remote-server


【解决方案1】:

我会将脚本放在远程服务器上并通过 SSH 远程执行它。 如果脚本应该随着时间而改变,那么将其分成 2-3 个步骤 1. 从远程机器收集任何附加参数 2.使用scp复制脚本到远程机器 3. ssh 在远程机器上“远程执行”脚本

我不确定您需要远程系统提供的参数。 我会尝试通过命令行选项将其交给#3 中的脚本。 否则在 #2 之前“破解”/修补它。

【讨论】:

  • 我已经将脚本分成两部分 #!/bin/bash PATH=ssh $1 bash -s &lt;tester.sh $2 scp -3 user@server1:/etc/somepath/$2/file.txt user@server2:$PATH但是当我运行脚本时,它说找不到 scp 命令,即使如果我在 bash 中运行它以及我们成功采用的所有参数它也能正常工作。抱歉,我无法对此进行分段,因为当我单击 Enter 时,它会保存评论。
  • 在所有脚本中正确设置 PATH 变量并将其导出。 PATH=/foo:/bar ;导出路径
猜你喜欢
  • 2013-12-28
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多