从本地服务器在客户端运行 Bash 脚本?

从本地服务器在客户端运行 Bash 脚本?

我编写了一个 bash 脚本供自己使用,它可以正常工作。我希望将该脚本放入我网络中的某个服务器中,并在我网络中的笔记本电脑/台式机中调用该脚本来执行。无论如何,我也为此找到了一种方法,如下所示。

脚步:

  1. 在本地服务器中安装 Apache 网络服务器。
  2. 将脚本放入网络服务器。
  3. 使脚本可执行chmod a+x
  4. 在客户端机器上打开终端并安装包curl
  5. 现在从客户端终端本身执行以下命令:

    sudo curl -kL http://serverip/script.sh | bash
    

它运行良好,但唯一的问题是,在我的脚本中,我使用了“读取变量”等用户输入命令,但在这种情况下不起作用。所以如何做到这一点是我的问题。有什么办法吗?

答案1

您可以使用:

bash -c "$(curl -kL http://serverip/script.sh)"

这将在本地机器上运行脚本。另请参阅man bash以了解我为什么使用-c选项。在这种情况下,双引号也非常重要。

此外,正如 @terdon 所说他的评论sudo curl毫无意义。如果脚本需要本地sudo权限,则需要在命令sudo前面使用。bash

答案2

思考你想要的是

wget http://server.com/scriptname.sh && bash scriptname.sh

这将简单地将脚本下载到本地并运行它。

答案3

正如 Radu 的评论所建议的,为什么不使用ssh从本地服务器启动脚本?

首先openssh-server在您的客户端系统上安装:

sudo apt-get install openssh-server

然后从本地服务器:

ssh -t client_login@client_ip '/path_to_your_script/script.sh'

-t命令中的选项强制ssh -t伪tty分配。

相关内容