猿问

如何从 df ~ 提取数据到我的网站?

我正在创建一个饼图,显示我的 linux 机器上有多少可用/使用的磁盘空间。但是,我不确定如何将数据解析到微服务 url。帮助将不胜感激。


这是我目前所拥有的:


路由器:


router.route('/linux_disk').get(disk.get_linux_disk)

控制器:


 function get_linux_disk(req, res, next) {

  try {

    var cmd = `df ~`;

    exec(cmd)


    rows = [];

    rows.push({"Command": cmd});

    if (rows.length >= 1) {

      res.status(200).json(rows);

    } else {

      res.status(404).end();

    }

  } catch (err) {

    next(err);

  }

}


阿波罗的战车
浏览 148回答 1
1回答

慕妹3242003

您可以尝试以下方法,我们为 df 命令创建的每个条目创建一个行对象。一旦你有了这个,你应该能够从这个创建你的饼图:const { exec } = require('child_process');const { promisify } = require('util');const execPromise = promisify(exec);async function get_linux_disk(req, res, next) {    try {        const result = await execPromise(`df ~`)        const lines = result.stdout.split("\n");        const keys = lines[0].split(/\s+/ig);        // Skip the header row when assigning objects..        const rows = lines.slice(1).map(line => {            // Parse each line..            const values = line.split(/\s+/ig);            return keys.reduce((o, k, index) => {                o[k] = values[index];                return o;            }, {})        });        res.status(200).json(rows);    } catch (err) {        res.status(500).send(err.message);    }}生成的 JSON 看起来有点像这样:[    {        "Filesystem": "/dev/sda1",        "1K-blocks": "10253588",        "Used": "7971516",        "Available": "1741504",        "Use%": "83%",        "Mounted": "/"    }]
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答