Как мне извлечь данные из df ~ на мой сайт? - PullRequest
1 голос
/ 08 октября 2019

Я создаю круговую диаграмму, которая показывает, сколько дискового пространства доступно / используется на моем компьютере с 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 Ответ

1 голос
/ 08 октября 2019

Вы можете попробовать подход ниже, мы создаем объект строки для каждой записи, которую создает команда 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": "/"
    }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...