2013-03-23 174 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)的有權限運行的腳本。