为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

阿波罗的战车 2021-11-12 17:10:46
我正在创建一个饼图,显示我的 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);  }}
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您可以尝试以下方法,我们为 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": "/"

    }

]


查看完整回答
反对 回复 2021-11-12
  • 1 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信