Попытка запустить скрипт оболочки с node.js с помощью sudo -S - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь запустить сценарий оболочки с доступом sudo, который выполняет сценарий python, используя Node.js на Ma c. Это очень помогло Как запустить файл сценария оболочки, используя nodejs? , но я застрял:

Сценарий оболочки:

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

Node.js код:

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

Когда я запускаю это в WebStorm, мне предлагается ввести мой пароль. Я делаю так, но ничего не происходит; скрипт не выполняется Кто-нибудь может мне помочь с этим?

1 Ответ

1 голос
/ 04 марта 2020

Проблема заключается в том, что вы не выполнили скрипт узла с разрешениями root: sudo node filename.js.

Кроме того, возможно, что дочерний процесс, который вы порождаете с оболочкой js Модуль не наследует эффективный UID процесса родительского узла. Если sudo node filename.js не решит вашу проблему, я бы рекомендовал использовать пакет execa вместо shelljs для лучшей отладки и инструментария порожденного дочернего процесса: https://www.npmjs.com/package/execa

Вы можете определить uid, gid дочернего процесса, а также поток stdin, который вы можете установить на ignore, чтобы не возникало никаких интерактивных приглашений (команда sudo распознает, что stdin нет при условии и, следовательно, не открывать интерактивную подсказку).

...