2013-03-23 126 views
1

我通过SSH开始脱落屏幕PHP脚本:通过SSH运行SSH屏幕上的命令phpseclib

$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?由于

+1

嗯......创建两个bash脚本,第一个:用名为f.e的'user'参数创建屏幕。 'run_screen',第二个:用于SSH客户端的测试者,其名称为f.e. 'run_test'。运行第一个脚本''ssh-> exec('[full_path]/run_screen'。$ user);'和second:'$ ssh-> exec('[full_path]/run_test'。$ user);'。所有的系统命令都会移至bash脚本。你可以在bash中编写脚本? – mkjasinski 2013-03-23 22:33:02

+0

我并不完全知道如何制作这些bash文件,你可以将我链接到资源或其他东西? – Runner 2013-03-23 22:53:14

+0

看这里:[http://linuxconfig.org/Bash_scripting_Tutorial](http://linuxconfig.org/Bash_scripting_Tutorial)。 – mkjasinski 2013-03-23 22:55:38

回答

1

嗯...

创造请2个bash脚本,第一:创建屏幕与名F.E.用户参数run_screen,第二:SSH客户端测试仪,名称为f.e.的user参数。 run_test

运行一个脚本:

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

和第二:

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

bash语法是这里bash syntax

当然该服务器的用户指标(如Apache)的有权限运行的脚本。