UNPKG

servius

Version:

Servius is a comprehensive npm package for server monitoring,providing tracking of CPU load, free memory, disk usage, process count, and other important system resources. It also offers details on CPU, server uptime, last boot time, OS, disk partitions,pr

83 lines (72 loc) 2.74 kB
const shelljs = require("shelljs") //System Start const uptime = () => { let time = shelljs.exec('cat /proc/uptime', {silent: true}).stdout.trim() time = time.split(' ')[0] return formatTime(time) } const getOS = () => { const osd = {} let details = shelljs.exec('cat /etc/*release', {silent: true}).stdout.trim() details = details.split('\n') details.forEach(line => { const [key, value] = line.split('=') switch (key) { case 'DISTRIB_ID': osd.distributor = value break case 'PRETTY_NAME': osd.pretty_name = value.replace(/"/g, '').trim() break case 'DISTRIB_RELEASE': osd.version = value break case 'DISTRIB_CODENAME': osd.codename = value.trim() break } }) return JSON.parse(JSON.stringify({distributor: osd.distributor, name: osd.pretty_name, version: osd.version, codename: osd.codename })) } const bootTime = (raw) => { raw = raw || false let time = raw ? shelljs.exec("cat /proc/stat | grep btime | awk '{print $2}'", {silent: true}).stdout.trim(): new Date(parseInt(shelljs.exec("cat /proc/stat | grep btime | awk '{print $2}'", {silent: true}).stdout.trim()) * 1000) return time } const getUsers = () => { let users = shelljs.exec('who | awk \'{print $1,$2,$3,$4,$5}\'', {silent: true}).stdout.trim() let each = users.split('\n') let user = [] each.forEach(element => { let [name, tty, date, time, host] = element.split(' ') host = host.replace('(', ' ').trim() host = host.replace(')', ' ').trim() user.push({name,tty,date,time,host}) }) return user } //System End module.exports = {getUsers, bootTime, getOS, uptime} // Handlers const formatTime = (seconds) => { let years = Math.floor(seconds / 31536000) seconds %= 31536000 let months = Math.floor(seconds / 2592000) seconds %= 2592000 let weeks = Math.floor(seconds / 604800) seconds %= 604800 let days = Math.floor(seconds / 86400) seconds %= 86400 let hours = Math.floor(seconds / 3600) seconds %= 3600 let minutes = Math.floor(seconds / 60) seconds %= 60 let result = "" if (years > 0) result += `${years} year${years > 1 ? 's' : ''}, ` if (months > 0) result += `${months} month${months > 1 ? 's' : ''}, ` if (weeks > 0) result += `${weeks} week${weeks > 1 ? 's' : ''}, ` if (days > 0) result += `${days} day${days > 1 ? 's' : ''}, ` if (hours > 0) result += `${hours} hour${hours > 1 ? 's' : ''}, ` if (minutes > 0) result += `${minutes} minute${minutes > 1 ? 's' : ''}, ` return result.slice(0, -2) }