2017-02-13 101 views
0

時,徵得同意,我有一些腳本編寫的NodeJS它使用spawn執行一些cmd命令:節點JS,執行菌種命令

let cmd = spawn("command name", ["my", "arguments"], {cwd: 'pth where it will be executed'}); 

cmd.stdOut.on('data', (data) => {/*Handle some output*/}) 

有時候代碼,我需要執行會問權限(有些用戶可能有密碼)。

如何查詢權限,然後繼續執行此命令?我知道以管理員或超級用戶身份啓動代碼會很簡單,但並非所有用戶都會這樣做。

+0

剛剛發佈了在Mac上測試過的答案。哪個操作系統在使用? –

+0

@AntonioNarkevich我正在Mac和Windows上測試它 –

回答

0

當你產卵的過程中,你可以通過{stdio:'inherit'}。 然後子進程會使用父母的標準輸入,輸出和錯誤,這意味着,如果子進程將需要sudo的權利,你會看到這樣的消息「密碼:」,從孩子來了,你就可以把它鍵入

我只是測試它這樣的:

const {spawn} = require('child_process'); 
 

 
let cmd = spawn('sudo', ['ls'], {stdio: 'inherit'}); 
 
//Also works like this 
 
let cmd = spawn('./requires-sudo.sh', {stdio: 'inherit'});

注意,你不需要聽「數據」事件了,因爲stdout是同爲父母和孩子,所以你會看到輸出。