尝试使用sudo -S与node.js运行shell脚本

问题描述 投票:-1回答:1

我正在尝试通过sudo访问来运行Shell脚本,该脚本在Mac上使用Node.js执行python脚本。这是一个很大的帮助How to run shell script file using nodejs?,但我被卡住了:

Shell脚本:

#!/bin/sh
sudo -S python [pathToPythonScript]/someScripts.py

Node.js代码:

const shell = require('shelljs');
shell.exec("./[pathToShellScript]");

当我在WebStorm中运行此密码时,系统会提示我输入密码。我这样做了,但是什么也没发生。该脚本未执行。有人可以帮我吗?

node.js shell webstorm
1个回答
0
投票

问题似乎是您没有以root权限执行节点脚本:sudo node filename.js

此外,可能是您使用shelljs模块生成的子进程未继承父节点进程的有效UID。如果sudo node filename.js无法解决您的问题,我建议您使用execa软件包而不是shelljs来更好地调试和检测生成的子进程:https://www.npmjs.com/package/execa

您可以定义子进程的uidgid以及stdin流,可以将其设置为ignore,这样就不会出现交互式提示(sudo命令将识别出没有stdin提供,因此无法打开交互式提示。)

© www.soinside.com 2019 - 2024. All rights reserved.