2013-03-23 2 views
1

У меня есть PHP-скрипт, который запускает отдельностоящий экран через SSH:Выполнение команды на экране SSH через SSH с phpseclib

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

теперь нужно выполнить команду на этом экране, не будучи в этом экране. У меня есть код, который делает это, который я тестировал через SSH-клиент, но когда я пытаюсь использовать его с командой phpeclib 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, сначала: создайте экран с параметром 'user' с именем f.e. 'run_screen', второй: тестер для SSH-клиента с параметром' user' с именем f.e. 'Run_test'. Запустите первый скрипт '$ ssh-> exec ('[full_path]/run_screen'. $ User);' и second: '$ ssh-> exec ('[full_path]/run_test'. $ User);'. Все системные команды перемещаются в сценарии bash. Вы можете писать сценарии в bash? – mkjasinski

+0

Я не совсем уверен, как сделать эти файлы bash, не могли бы вы связать меня с ресурсом или чем-то еще? – Runner

+0

смотрите здесь: [http://linuxconfig.org/Bash_scripting_Tutorial](http://linuxconfig.org/Bash_scripting_Tutorial). – mkjasinski

ответ

1

Хммм ...

создать пожалуйста два Баш скрипт, первый: создать экран с параметром пользователя с именем 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

Конечно, что пользователь сервера (F.E. Apache) имеет разрешение для запуска сценариев.

 Смежные вопросы

  • Нет связанных вопросов^_^