我正在制作一个Minecraft控制面板,但对如何向每个屏幕发送命令感到困惑。我理解如何对屏幕执行命令,但我不理解读取输出。
实施例。我有屏幕A和屏幕B.我想在屏幕A中执行某些操作,然后获取输出,然后退出屏幕。
答案 0 :(得分:3)
这是一个更简单的解决方案: 在两台服务器中使用Websend bukkit插件(Download&info)。 PHP可以在安装插件和设置php类时简单地执行命令和接收输出,这也可能比bash屏幕更复杂,并且更容易设置和使用。
以下是使用此示例:
<?php
include_once 'Websend.php';
//Replace with bukkit server IP. To use a different port, change the constructor to new Websend(ip, port)
$ws = new Websend($ServerIP, $ServerPort);
//Replace with password specified in Websend config file
$ws->connect("password");
$ws->doCommandAsConsole("give ".$PlayerName." 64 1");
$ws->disconnect();
?>
在此示例中,脚本项为变量定义的播放器。
您可以执行自定义变量命令,替换$ws->doCommandAsConsole("give ".$PlayerName." 64 1");' to
$ ws-&gt; doCommandAsConsole(“$ _ REQUEST ['customCMD']”);其中customCMD是GET或POST形式的字段。
答案 1 :(得分:0)
实际上并不需要插件,但请记住,使用shell_exec可以在安全方面为您打开一个巨大的痛苦世界。
但是,我在drupal中实现控制面板时遇到了类似的问题,我设法使用以下代码将命令运行到屏幕上。
shell_exec("screen -S ScreenName -X stuff \"echo hello world\"'\n'");
欢迎你。