Выполнять команды оболочки, используя nodejs с доступом root - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу выполнить следующие команды оболочки внутри приложения nodeJs. Если я делаю работу вручную, команды следующие:

sudo su
password
1 command that needs a root access
exit

Любая идея или фрагмент кода будут полезны

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Вы можете выполнять команды, используя exe c функцию child_process

const { exec } = require("child_process");
// Here you can execute whatever command you want to execute 
exec("ls -la", (error, stdout, stderr) => {
    if (error) {
        console.log(`error: ${error.message}`);
        return;
    }
    if (stderr) {
        console.log(`stderr: ${stderr}`);
        return;
    }
    // stdout returns the output of the command if you wish to use
    console.log(`stdout: ${stdout}`);
});
0 голосов
/ 06 февраля 2020

Вы можете объединить все 4 команды в одну по ссылке: Ответ суперпользователя

echo "<password>" | sudo -S "<command that needs a root access>"

В своем коде NodeJs - попробуйте выполнить одно из следующих действий:

  • Pure JS way
var command='echo "<password>" | sudo -S "<command that needs a root access>"';
child_process.execSync(command)
  • Использование библиотеки shell-exe c - вспомогательная библиотека, которая использует child_process.spawn
const shellExec = require('shell-exec')
var command='echo "<password>" | sudo -S "<command that needs a root access>"';
shellExec('echo Hi!').then(console.log).catch(console.log)

Обязательно проверьте команду, которую необходимо выполнить, прежде чем запускать ее, чтобы избежать нежелательных результатов.

...