【问题标题】:Trying to run a shell script with node.js using sudo -S尝试使用 sudo -S 运行带有 node.js 的 shell 脚本
【发布时间】:2020-06-16 10:27:45
【问题描述】:

我正在尝试运行具有 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】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 2013-10-06
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多