From 5ca66bd68a790ba855c05b6b82a85e533e5d3efb Mon Sep 17 00:00:00 2001 From: Joe Wroten Date: Fri, 17 May 2019 17:56:41 -0500 Subject: [PATCH] Uptime --- data/raw/test/uptime.raw | 1 + index.js | 7 +++++++ mkData.js | 2 ++ mkDataFromUptime.js | 20 ++++++++++++++++++++ mkRaw.sh | 7 ++++++- src/assets/app.js | 12 ++++++++++++ src/index.html | 10 ++++++++-- 7 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 data/raw/test/uptime.raw create mode 100644 mkDataFromUptime.js diff --git a/data/raw/test/uptime.raw b/data/raw/test/uptime.raw new file mode 100644 index 0000000..2468170 --- /dev/null +++ b/data/raw/test/uptime.raw @@ -0,0 +1 @@ +2019-01-01 01:00:00 diff --git a/index.js b/index.js index bf0391a..a124aca 100644 --- a/index.js +++ b/index.js @@ -43,3 +43,10 @@ app.route(apiPrefix + '/cpuusage').get((req, res) => { }); }); +app.route(apiPrefix + '/uptime').get((req, res) => { + fs.readFile(path.join(__dirname, 'data/json', 'uptime.json'), 'utf8', (err, json) => { + if (err) { throw new Error(err); } + res.json(JSON.parse(json)); + }); +}); + diff --git a/mkData.js b/mkData.js index 90209ee..82a919c 100644 --- a/mkData.js +++ b/mkData.js @@ -1,9 +1,11 @@ let dataFromDate = require('./mkDataFromDate.js'); let dataFromDiskspace = require('./mkDataFromDiskspace.js'); let dataFromCPUUsage = require('./mkDataFromCPUUsage.js'); +let dataFromUptime = require('./mkDataFromUptime.js'); let isTestMode = process.argv[2] === '--test'; dataFromDate(isTestMode); dataFromDiskspace(isTestMode); dataFromCPUUsage(isTestMode); +dataFromUptime(isTestMode); diff --git a/mkDataFromUptime.js b/mkDataFromUptime.js new file mode 100644 index 0000000..2af7bb5 --- /dev/null +++ b/mkDataFromUptime.js @@ -0,0 +1,20 @@ +const fs = require('fs'); +const path = require('path'); +const moment = require('moment'); + +module.exports = async function(useTestData = false) { + fs.readFile(path.join(__dirname, 'data/raw', useTestData ? 'test' : 'real', 'uptime.raw'), 'utf8', (err, uptime) => { + if (err) { + console.error(err); + process.exit(1); + } + let jsonString = JSON.stringify({ + uptime: moment(uptime, 'YYYY-MM-DD HH:mm:ss').format('hh:mm MM-DD-YYYY'), + }); + + fs.writeFile(path.join(__dirname, 'data/json', 'uptime.json'), jsonString, err => { + if (err) throw err; + }); + }); +} + diff --git a/mkRaw.sh b/mkRaw.sh index 2d30f65..081eeb0 100644 --- a/mkRaw.sh +++ b/mkRaw.sh @@ -11,4 +11,9 @@ echo "diskspace.raw updated" touch data/raw/real/usage.raw top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }' > data/raw/real/cpuusage.raw -echo "usage.raw updated" +echo "cpuusage.raw updated" + +touch data/raw/real/uptime.raw +uptime -s > data/raw/real/uptime.raw +echo "uptime.raw updated" + diff --git a/src/assets/app.js b/src/assets/app.js index 9482de5..1cc77d5 100644 --- a/src/assets/app.js +++ b/src/assets/app.js @@ -12,11 +12,15 @@ new Vue({ fetchingCPUUsage: true, cpuUsageNum: 0, cpuUsageStr: '', + + fetchingUptime: true, + uptime: '', }, created() { this.fetchLastBuildDate(); this.fetchDiskSpace(); this.fetchCPUUsage(); + this.fetchUptime(); }, methods: { async fetchLastBuildDate() { @@ -46,5 +50,13 @@ new Vue({ this.fetchingCPUUsage = false; } catch (err) { throw new Error(err); } }, + async fetchUptime() { + this.fetchingUptime = true; + try { + let { data } = await axios.get('/api/uptime'); + this.uptime = data.uptime; + this.fetchingUptime = false; + } catch (err) { throw new Error(err); } + }, }, }); diff --git a/src/index.html b/src/index.html index 22e6fa2..1ed3c7b 100644 --- a/src/index.html +++ b/src/index.html @@ -54,9 +54,15 @@