Created
September 25, 2019 13:10
-
-
Save juanhuttemann/16483670428b283c02e7450d36476c86 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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