1

我有一个通过 SSH 启动分离屏幕的 PHP 脚本:

$ssh->exec("screen -m -d -S ".$user);

我现在需要在该屏幕中执行一个命令,而不是在该屏幕中。我有执行此操作的代码,我已经通过 SSH 客户端对其进行了测试,但是当我尝试将它与 phpseclib exec 命令一起使用时,它不起作用。这是有效的代码:

screen -S ".$user." -X stuff "cd minecraft/servers/".$user."/;sh start.sh $(printf '\r')"

这就是 PHP 脚本中的内容:

$ssh->exec("screen -S ".$user." -X stuff \"cd minecraft/servers/".$user."/;sh start.sh $(printf '\r')\"");

我试图转义代码中多余的双引号。

我能做些什么来通过 PHP 完成这项工作吗?谢谢

4

1 回答 1

1

嗯……

请创建两个 bash 脚本,第一个:使用名称为 fe 的用户参数创建屏幕,第二个:使用名称为 fe 的参数创建run_screenSSH 客户端的测试器。userrun_test

运行第一个脚本:

$ssh->exec('[full_path]/run_screen ' . $user);

第二:

$ssh->exec('[full_path]/run_test ' . $user);

bash语法在这里是bash 语法

确保服务器用户(fe Apache)有权运行脚本。

于 2013-03-24T16:24:28.693 回答