2013-05-09 119 views
0

我需要在PHP的遠程web服務器上執行bash script。請求源自web1通過PHP並需要在另一個web服務器web2上執行bash腳本。 web1可以通過SSH登錄到web2所有本地流量,但通過PHP做SSH實在是很討厭,運行exec("ssh [email protected] ./bash_script")似乎是一個可怕的安全想法。另外,試圖從bash腳本中公開某種類型的HTTP接口似乎是錯誤的方法。如何從PHP執行遠程bash腳本

建議什麼?是否有任何跨語言和遠程執行庫或框架?

想到我可以在Node.js中編寫一個簡單的包裝來執行bash腳本,並且生活在web2上。 web1只是通過HTTP訪問node.js包裝器。

謝謝。

+0

我相信後者是一個更好的選擇。 – Hameed 2013-05-09 04:09:29

+0

爲什麼不讓web1聯繫web2執行bash_script的php文件? Web2可以通過IP驗證它是否爲web1。 – 2013-05-09 04:12:56

+0

@DaveChen PHP'exec()'是阻塞的,如果我使用node.js,我可以派發每個請求來運行bash腳本的單獨線程。 – Justin 2013-05-09 04:14:46

回答

0

您可以使用rexec命令。 rexec將幫助您執行遠程命令。

rexec [ -abcdhns -l username -p password ] host command 

有關更多詳細信息,請參見this

+0

'rexec'是否使用SSH?我不關注服務器如何通信?有''我必須安裝在'web2'守護進程? – Justin 2013-05-09 04:18:53

+0

'rexec'是一個linux命令,它不使用SSH。我在我的網絡服務器中使用了相同的命令來安排備份作業。我真的不知道'rexec'是如何工作的。一個缺點是,您的用戶名和密碼通過網絡以純文本形式發送。 – 2013-05-09 04:27:01

+0

請看看這個。 http://jpsoft.com/help/index.htm?rexec.htm – 2013-05-09 04:34:13