我有一个可通过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进行这项工作吗?谢谢
最佳答案
嗯...
创建两个bash脚本,第一个是:使用名称为f.e的用户参数创建屏幕。 run_screen
,第二个:SSH客户端测试器,其user
参数名为f.e. run_test
。
运行第一个脚本:
$ssh->exec('[full_path]/run_screen ' . $user);
第二:
$ssh->exec('[full_path]/run_test ' . $user);
bash
语法在这里bash syntax确保服务器的用户(例如Apache)具有运行脚本的权限。
关于php - 使用phpseclib通过SSH在SSH screen 上运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15592314/