【问题标题】:Executing bash command (with root access) inside nodejs app在 nodejs 应用程序中执行 bash 命令(具有 root 访问权限)
【发布时间】:2016-09-28 15:55:37
【问题描述】:

我这里有个小问题。 我有 nodejs 应用程序,它应该在操作系统的 bash 中以 root 权限运行命令,f.e.

命令是: echo "$password" | /usr/bin/sudo /usr/bin/abc --key "$username"

这是我的代码:

const spawn = require('child_process').spawn;
function sendMessage() {
    let username = 'WhoLetTheDogsOut';
    let password = 'Woof!';
    const echo = spawn('echo', [ password ]);
    const abc = spawn('sudo', [ `/usr/bin/abc --key ${username}` ]);
}
sendMessage();

请帮忙。阅读official Node child_process.spawn() doc 后,我没有找到错误的地方,而且我不断收到错误: gnokii stderr: sudo: /usr/bin/gnokii --sendsms +375293941196: 找不到命令

【问题讨论】:

  • 你的意思是在/usr/bin/abc --key ${username} 周围有`?他们不应该是'。
  • 您的系统上是否安装了 gnokii gnokii.org/index.shtml?
  • 我看不到您将“echo”的标准输出绑定到“abc”的标准输入的位置。
  • 好的,我认为正在发生的事情是其中一个衍生进程失败(可能是 abc,因为密码未到达),然后 gnokii 由于其他一些不相关的原因而失败。您需要将来自 echo 的标准输出绑定到 abc 的标准输入。您还应该写出 echo 和 abc 中的错误并发布结果。 echo.stdout.on('data', (data) => { abc.stdin.write(data); });

标签: javascript node.js bash


【解决方案1】:

希望对你有所帮助,它是一个 NPM "node-cmd" 的包,你可以用 nodejs 在 bash 中运行命令,下面是一个例子:

var cmd=require('node-cmd');

cmd.get('echo '+password+' | /usr/bin/sudo /usr/bin/abc --key '+username,
    function(data){
        console.log('The result of the command:'+data)
    }
);

如果需要,请记住授予文件权限 (chmod) 并像 root 一样运行进程。

这是来源https://www.npmjs.com/package/node-cmd

【讨论】:

  • 我会尝试并稍后发布结果。谢谢!
猜你喜欢
  • 2020-05-22
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多