2017-02-13 123 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是同为父母和孩子,所以你会看到输出。