我编写了一个 bash 脚本供自己使用,它可以正常工作。我希望将该脚本放入我网络中的某个服务器中,并在我网络中的笔记本电脑/台式机中调用该脚本来执行。无论如何,我也为此找到了一种方法,如下所示。
脚步:
- 在本地服务器中安装 Apache 网络服务器。
- 将脚本放入网络服务器。
- 使脚本可执行
chmod a+x
。 - 在客户端机器上打开终端并安装包
curl
现在从客户端终端本身执行以下命令:
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分配。