2017-02-13 8 views
0

スポーンのコマンドを実行したときに、私はいくつかのCMDコマンドを実行するためにspawnを使用していますnodejsで書かれたいくつかのスクリプト持って許可を求める:時々私は実行するために必要なコードは、一部のユーザーが持っていること(許可を求めますノード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でテストした回答を掲載しました。どのOSが使用していますか? –

+0

@AntonioNarkevich私はMacとWindowsの両方でテストしています –

答えて

0

プロセスを生成するときに{stdio: 'inherit'}を渡すことができます。 子プロセスは親のstdin、stdout、stderrを使用します。つまり、子プロセスがsudo権限を必要とする場合は、子プロセスの 'Password:'のようなメッセージが表示され、入力することができます。

私はちょうどこのようにそれをテストした:

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は、親と子のために同じであるとして、あなたはもう「データ」イベントに耳を傾ける必要はありませんので、あなたが表示されますことをお知らせ出力。