【问题标题】:Run script on remote server via PHP通过 PHP 在远程服务器上运行脚本
【发布时间】:2014-08-28 20:55:25
【问题描述】:

我有一家游戏服务器公司,在我的控制面板上,我目前有一个页面,用户可以在其中单击一个按钮,然后在他们的游戏服务器上安装一个世界。这是通过节点上的脚本来完成的,该脚本将世界提取到他们的游戏服务器上。

我有几个节点,面板托管在我的网络服务器上。当他们点击网站上的按钮时,我将如何做到这一点,它不仅将表单的值发布到脚本,而且还运行脚本?

如需了解,脚本如下:

#!/bin/bash

id=$SERVERID

if [ "$WORLD" = "testworld" ]; then
     cd "/home/minecraft/multicraft/servers/server$SERVERID"
     unzip -nu "$JAR_DIR/maps/testworld.zip"
fi

exit 0

变量 $WORLD 是需要从控制面板上的表单作为 POST 发送到脚本的内容。

变量 $SERVERID 在脚本顶部定义,也需要从控制面板上的表单发送。控制面板已经定义了这个变量,只需将它作为表单的一部分发送到脚本即可。

我很确定如何在行上回显 $SERVERID 变量:

cd "/home/minecraft/multicraft/servers/server$SERVERID"

因此,我们也非常感谢您的帮助。

有什么想法吗?

谢谢

【问题讨论】:

  • 我很困惑,如果你能用一句话总结这个问题,那会是什么?

标签: php shell


【解决方案1】:

您可以将服务器上的脚本保存为 Shell 脚本,该脚本接受 $WORLD 和 $SERVERID 作为命令行参数。之后使用execsystem 命令从PHP 运行该脚本。

现在,您的 Shell 脚本如下所示。

#!/bin/bash

id=$SERVERID

if [ "$1" = "testworld" ]; then
 cd "/home/minecraft/multicraft/servers/server${2}"
 unzip -nu "$JAR_DIR/maps/testworld.zip"
fi

exit 0

另存为,比如说script.sh。现在,从 PHP 调用它。

exec("script.sh " . $WORLD . " " . $SERVERID);

我希望我的问题得到了正确的回答,这对您有所帮助。

【讨论】:

  • 嗨,对不起,这个问题有点令人困惑。 shell 脚本部分的帮助非常有帮助! {1} 和 {2} 是如何工作的?它们的作用是什么?参考php,php部分在web服务器上,shell脚本在另一台服务器上,所以php需要从远程服务器调用脚本。
  • $1, $2 ... 是给脚本的命令行参数。例如在script.sh arg1 arg2 .. argN $1 将包含“arg1”,$2 将包含“arg2”等等。
  • 如果您对 ${1} 中的大括号感到困惑。在 ${1} 中,{} 用于将变量名称与其他文本分开,例如“${1}Hello”中的示例 ${1} 是变量广告 Hello 是其他文本。不清楚我们是否只写“$1Hello”。
  • 啊,我明白了!谢谢。参考 php,php 部分在 web 服务器上,shell 脚本在另一台服务器上,所以 php 需要从远程服务器调用脚本,我该怎么做?
  • 您是在告诉您在需要运行 shell 脚本的服务器上没有运行 Web 服务器,对吗?在这种情况下,您可以通过 PHP 尝试 ssh。我对这个选项了解不多,或者设置一个小型 Web 服务器只是为了调用 shell 脚本。无论哪种情况,您都必须在要用于 shell 脚本的机器上设置服务器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多