【问题标题】:Nodejs child_process execute shell commandnodejs child_process 执行shell命令
【发布时间】:2024-05-02 08:35:02
【问题描述】:

我正在从事一个大学项目,我必须评估开放 WiFi 网络的安全威胁。我选择了 aircrack-ng 工具集进行渗透测试。我的项目使用 Node js 来实现丰富的功能集。但是,我是初学者,正在努力解决问题。首先,我将展示我的代码,然后提出问题。

var spawn = require('child_process').spawn;
var nic = "wlan2";

//obtain uid number of a user for spawing a new console command
//var uidNumber = require("uid-number");
// uidNumber("su", function (er, uid, gid) {
//  console.log(uid); 
// });

//Check for monitor tools
var airmon_ng= spawn('airmon-ng');
airmon_ng.stdout.on('data', function (data) {
  nicList = data.toString().split("\n");
  //use for data binding
  console.log(nicList[0]);//.split("\t")[0]);
});

//airmon start at the nic(var)
var airmon_ng_start = spawn('airmon-ng',['start',nic]).on('error',function(err){console.log(err);});
airmon_ng_start.stdout.on('data', function (data) {
console.log(data.toString());
});

var airmon_ng_start = spawn('airodump-ng',['mon0']).on('error',function(err){console.log(err);});
airmon_ng_start.stdout.on('data', function (data) {
console.log(data.toString());
});

如上面的代码所示。我使用 child_process.spwan 来执行 shell 命令。在“var airmon_ng_start = spawn(......”这一行中,实际的命令在终端中执行,直到 ctrl+c 被点击才结束,它会定期更新附近可用的 Wi-Fi 网络列表.我的目标是识别我希望测试漏洞的网络.但是,当我执行命令时,进程进入无限循环并等待shell命令终止(直到被杀死才会终止)此外,我希望使用stdout 流以在 Wi-Fi 发现和更新时显示新的数据集。node.js 专家可以为我提供更好的方法吗?

2) 我也以​​ root 身份执行一些命令。如何做到这一点。现在我以 root 身份运行 javascript。但是,在项目中,我希望仅以 root 身份执行某些命令,而不是以 root 身份执行整个 js 文件。有什么建议吗?

【问题讨论】:

    标签: javascript linux node.js shell child-process


    【解决方案1】:
    //inherit parent`s stdout stream
    var airmon_ng_start = spawn('airodump-ng',['mon0'],{ stdio: 'inherit' })
    .on('error',function(err){console.log(err);});
    

    找到了这个解决方案。只需继承父级的标准输出

    【讨论】: