2015-07-28 19 views
0

我想從Node.js服務器上的python腳本獲取數據。 我需要用超級用戶權限啓動這個python腳本。如何從Node.js的python腳本獲取數據?

child.execFile('sudo python /home/pi/node.js_scripts/app/request.py', function (err, stdout, stderr) { 
if (err) throw err; 
if (stderr) throw err; 
console.log(stdout); }); 

,但我得到這個錯誤:

Error: spawn sudo python /home/pi/node.js_scripts/app/request.py ENOENT 
    at exports._errnoException (util.js:746:11) 
    at Process.ChildProcess._handle.onexit (child_process.js:1046:32) 
    at child_process.js:1137:20 
    at process._tickCallback (node.js:355:11) 

我怎樣才能解決我的問題?

回答

1

問題是execFile需要一個文件路徑。這個文件需要是可執行的。在你的情況下,你正試圖執行一個命令。改爲嘗試child.exec(),或者創建一個運行此命令的小型可執行shell腳本。

此外,給你的node.js服務器sudo權限並不明智。我沒有任何關於如何解決這個問題的好建議。也許看看setuid。這真的取決於你的用例(應該是一個單獨的問題)。

+0

謝謝,我試過child.exec(),但由於緩衝區容量它最多隻能返回200K。是否有可能用sudo產生進程? 我同意你關於sudo權限,但實際上我不知道更好的方法來避免它。 – Nick

+0

我想你會遇到與execFile相同的問題?你可以在'exec'中使用'maxBuffer'選項,但是也許你應該從孩子讀取,這樣你的緩衝區沒有被填滿。例如,請參閱[this](http://stackoverflow.com/a/9781295/98057)。 –

+0

你也可以[重定向輸出到一個文件](https://nodejs.org/api/child_process.html#child_process_child_stdio), –

相關問題