Skip to content

Instantly share code, notes, and snippets.

@juanhuttemann
Created September 25, 2019 13:10
Show Gist options
  • Save juanhuttemann/16483670428b283c02e7450d36476c86 to your computer and use it in GitHub Desktop.
Save juanhuttemann/16483670428b283c02e7450d36476c86 to your computer and use it in GitHub Desktop.
var os = require('os');
var _ = require('underscore');
var osUtils = require('os-utils');
var ds = require('fd-diskspace');
var express = require('express');
var app = express();
var fs = require("fs");
var logBackup;
var drivelist = require('drivelist');
var checkDiskSpace = require('check-disk-space');
app.get('/', function (req, res) {
if (fs.existsSync(filename)) {
logBackup = fs.readFileSync(filename, "utf8");
}
var ethDevices = [];
var cpus = [];
_.each(os.cpus(), function (value) {
var cpu = {
model: '',
speed: '',
};
cpu.model = value.model;
cpu.speed = value.speed;
cpus.push(cpu);
});
_.each(os.networkInterfaces(), function (data, device) {
var ethDevice = {
name: '',
mac: '',
address: '',
address2: '',
};
ethDevice.name = device
ethDevice.mac = data[0].mac
//ethDevice.address = data[0].address
//ethDevice.address2 = data[1].address
ethDevice.name = device
ethDevice.mac = data[0].mac
if (typeof data[0] !== "undefined") ethDevice.address = data[0].address
if (typeof data[1] !== "undefined") ethDevice.address2 = data[1].address
ethDevices.push(ethDevice)
})
osUtils.cpuUsage(function (value) {
serverData = {
hostname: os.hostname(),
os: osUtils.platform(),
arch: os.arch(),
uptime: (osUtils.sysUptime() / 60 / 60),
total_ram: osUtils.totalmem(),
free_ram: osUtils.freemem(),
total_cpus: osUtils.cpuCount(),
eth_devices: ethDevices,
cpus: cpus,
lastBackup: logBackup,
cpuUsage: value * 100,
disks: '',
services: {
sqlserver: "",
iis: ""
}
}
async function main(data) {
var promise = new Promise((resolve, reject) => {
drivelist.list((error, drives) => {
resolve(drives)
});
});
var result = await promise;
var disks = {}
for (var disk of result) {
if (!(disk.mountpoints.length === 0)) {
var path = disk.mountpoints[0].path
if (path=="[SWAP]") {
path="/"
}
var d = await checkDiskSpace(path)
disks[path] = d
disks[path].used = d.size - d.free
}
}
data.disks = disks
var exec = require("child_process").exec;
exec('sc query MSSQLSERVER | findstr /i "ESTADO"', function (err, stdout) {
var lines = stdout.toString().split("\r\n").filter(function (line) {
return line.indexOf("ESTADO") !== -1;
}).map(function (line) {
return line.replace("ESTADO", "").replace(/ /g, '').replace(":", "").replace("4", "").replace("RUNNING", "ACTIVO");
});
serverData.services.sqlserver = lines[0];
});
exec('sc query w3svc | findstr /i "ESTADO"', function (err, stdout) {
var lines = stdout.toString().split("\r\n").filter(function (line) {
return line.indexOf("ESTADO") !== -1;
}).map(function (line) {
return line.replace("ESTADO", "").replace(/ /g, '').replace(":", "").replace("4", "").replace("RUNNING", "ACTIVO");
});
serverData.services.iis = lines[0];
});
if (osUtils.platform() != "linux") {
serverData.disks = ds.diskSpaceSync().disks
}
res.setHeader('Content-Type', 'application/json');
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.send(JSON.stringify(serverData));
}
main(serverData);
})
});
server(app, 3000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment