99 lines
3.7 KiB
JavaScript
99 lines
3.7 KiB
JavaScript
const readline = require('readline');
|
|
const util = require('util');
|
|
const { exec } = require('child_process');
|
|
|
|
let waiting = false;
|
|
let timer;
|
|
|
|
function printMenu() {
|
|
console.log('');
|
|
console.log('-----------------------------------------------------------------------------------------------------------------------------------');
|
|
console.log('a ... Audio g ... Graphics p ... Processes w ... WIFI networks 1 ... NET Iface Default');
|
|
console.log('b ... BIOS h ... Bluetooth P ... Process Load y ... Battery 2 ... NET Gateway Default');
|
|
console.log('B ... Baseboard i ... INET Latency r ... Printer z ... Users 3 ... NET Interfaces');
|
|
console.log('C ... Chassis I ... INET Check Site s ... Services 4 ... NET Stats');
|
|
console.log('c ... CPU l ... CPU Load S ... Shell 5 ... NET Connections');
|
|
console.log('d ... DiskLayout L ... Full Load t ... time 6 ... Docker Info');
|
|
console.log('D ... DiskIO n ... T ... CPU Temperature + ... All Static 7 ... Docker Container');
|
|
console.log('e ... Block Devices m ... Memory u ... USB - ... All Dynamic 8 ... Docker Cont Stats');
|
|
console.log('E ... Open Files M ... MEM Layout U ... UUID # ... All 9 ... Docker Cont Proc');
|
|
console.log('f ... FS Size o ... OS Info v ... Versions , ... Get Object 0 ... Docker All');
|
|
console.log('F ... FS Stats O ... V ... VirtualBox . ... Observe q >>> Quit');
|
|
console.log('-----------------------------------------------------------------------------------------------------------------------------------');
|
|
}
|
|
|
|
function EnableUserInput() {
|
|
readline.emitKeypressEvents(process.stdin);
|
|
process.stdin.setRawMode(true);
|
|
}
|
|
|
|
// function DisableUserInput() {
|
|
// process.stdin.removeAllListeners()
|
|
// }
|
|
function noop() { }
|
|
|
|
function dot() {
|
|
process.stdout.write('.');
|
|
}
|
|
|
|
function startDots() {
|
|
dot();
|
|
timer = setInterval(() => {
|
|
dot();
|
|
}, 500)
|
|
}
|
|
|
|
function stopDots() {
|
|
clearInterval(timer);
|
|
}
|
|
|
|
function printTitle(title) {
|
|
title = '||' + (' ' + title + ' ').substr(0, 36) + '||'
|
|
console.log('========================================');
|
|
console.log(title);
|
|
console.log('========================================');
|
|
|
|
}
|
|
|
|
process.stdin.on('keypress', (key, data) => {
|
|
// console.log(data);
|
|
if (data.name === 'q' && !data.shift) {
|
|
// shut down
|
|
process.exit()
|
|
}
|
|
|
|
if (!waiting) {
|
|
waiting = true;
|
|
startDots();
|
|
exec(`node si.js '${key}'`, {timeout: 30000}, (error, stdout) => {
|
|
waiting = false;
|
|
stopDots();
|
|
if (error && error.signal) {
|
|
console.log();
|
|
console.log('TIMEOUT!');
|
|
} else {
|
|
try {
|
|
if (stdout.toString().startsWith('"no_key')) {
|
|
console.log()
|
|
console.log('menu item not found - select valid menu item')
|
|
} else if (stdout.toString()) {
|
|
data = JSON.parse(stdout.toString());
|
|
console.log();
|
|
console.log();
|
|
printTitle(data.title);
|
|
console.log(util.inspect(data.data, { colors: true, depth: 4 }));
|
|
printMenu();
|
|
}
|
|
} catch (e) {
|
|
console.log();
|
|
console.log('Key: ' + key);
|
|
console.log('ERROR - UNSUPPORTET');
|
|
}
|
|
}
|
|
})
|
|
}
|
|
});
|
|
|
|
printMenu();
|
|
EnableUserInput();
|