节点JS,在执行Spawn命令时询问权限

时间:2017-02-13 10:47:56

标签: node.js permissions spawn

我在nodejs中编写了一些脚本,使用spawn执行一些cmd命令:

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

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

有时我需要执行的代码会请求权限(某些用户可能有密码)。

如何询问权限然后继续执行此命令?我知道以管理员或超级用户身份启动代码会很简单,但并非所有用户都会这样做。

1 个答案:

答案 0 :(得分: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'});

请注意,您不再需要监听'data'事件,因为父节点和子节点的标准输出相同,所以您将看到输出。