我在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*/})
有时我需要执行的代码会请求权限(某些用户可能有密码)。
如何询问权限然后继续执行此命令?我知道以管理员或超级用户身份启动代码会很简单,但并非所有用户都会这样做。
答案 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'事件,因为父节点和子节点的标准输出相同,所以您将看到输出。