node.js - 尝试使用 sudo -S 运行带有 node.js 的 shell 脚本
问题描述
我正在尝试运行具有 sudo 访问权限的 shell 脚本,该脚本在 Mac 上使用 Node.js 执行 python 脚本。这是一个很大的帮助如何使用 nodejs 运行 shell 脚本文件?但我被卡住了:
外壳脚本:
#!/bin/sh
sudo -S python [pathToPythonScript]/someScripts.py
Node.js 代码:
const shell = require('shelljs');
shell.exec("./[pathToShellScript]");
当我在 WebStorm 中运行它时,系统会提示我输入密码。我这样做了,但什么也没发生;脚本未执行。有人可以帮我吗?
解决方案
问题似乎是您没有以 root 权限执行节点脚本:sudo node filename.js
.
此外,您使用 shelljs 模块生成的子进程可能没有继承父节点进程的有效 UID。如果sudo node filename.js
不能解决您的问题,我建议使用该execa
包而不是shelljs
更好地调试和检测生成的子进程:https ://www.npmjs.com/package/execa
您可以定义子进程的uid
,gid
以及 stdin 流,您可以将其设置为ignore
不会出现交互式提示(sudo 命令会识别出没有stdin
提供,因此不会打开交互式提示)。
推荐阅读
- algorithm - c ++ std转换多次调用复制构造函数
- kubernetes - 被普罗米修斯的“元素”弄糊涂了:每个吊舱似乎有三个?
- angular - 如何使用 Angular 9 中的 Keycloak 自动更新令牌以保持会话活动?
- microsoft-graph-api - Microsoft Teams 中的群聊(对话组而非团队频道)中的机器人安装
- java - 如何将 FTP 文件名与 Bing Ads 目录相关联
- docker - 独立 Docker 容器中的 Memcached 超时和端口错误
- mysql - 如何使用laravel连接mysql数据库
- java - 奇数循环不会关闭
- node.js - 如何在 MongoDB 中格式化 Multer 图像 url
- python - 提高 GRU、keras 的准确率