2015-12-15 49 views
1

我正在開發一個小型web應用程序,我希望能夠讓我的用戶能夠按下按鈕並能夠在服務器上遠程執行腳本。我希望腳本的輸出顯示在客戶端上。獲取腳本在服務器上執行並使用node.js在客戶端上顯示腳本輸出的最佳方式是什麼?

我只是想了解實現這種功能的最佳方式。是否有任何圖書館/結節讓你直接做這樣的事情?

可能途徑

  1. Child.process()
+0

你問是否有HTTP在Node.js中實現的服務器? –

+0

@FelixKling不完全。我希望能夠通過按下客戶端上的按鈕來呼叫服務器上的bash腳本。我正在尋找的是與RPC一致的東西。所以我遠程調用一個bash腳本,並在客戶端顯示它的輸出。 – cyberbeast

+0

你是否需要安全地做到這一點,所以腳本不能以惡意的方式混淆你的服務器?因爲如果需要虛擬機的話。如果不是,您只需要知道如何運行腳本(取決於腳本的類型),然後將stdio的內容返回給用戶。 – jfriend00

回答

0

看一看節點的child_process庫。 Link

我之前使用過.exec函數,因爲它運行一個腳本來完成並捕獲輸出。這聽起來像你正在尋找什麼,只是用你的例子替換他們的示例命令。

var exec = require('child_process').exec, 
    child; 

child = exec('cat *.js bad_file | wc -l', 
    function (error, stdout, stderr) { 
    console.log('stdout: ' + stdout); 
    console.log('stderr: ' + stderr); 
    if (error !== null) { 
     console.log('exec error: ' + error); 
    } 
}); 

環繞此調用回調,你會得到回調的響應,然後到客戶端,當腳本完成。請注意您通過HTTP請求運行的腳本。像「運行任何命令」這樣的開放字符串將是明顯的安全問題,長時間運行的腳本將成爲HTTP超時的一個問題。你可以實現一個基於WebSockets的解決方案和管道結果(如果你想啓動一個進程並保持它運行,並且可能會在稍後與它進行交互,請看.spawn)。

+0

我會試試這個。是的,我更喜歡websockets的實現。 – cyberbeast

相關問題