var express = require('express'); var router = express.Router(); var exec = require('child_process').execFile; var os = require('os'); /* GET home page. */ router.get('/', function(req, res, next) { exec('dladm', ['show-phys'], function(err, data) { console.log(err); console.log(data); data = data.split(os.EOL); //data = data[0].split(' '); link = []; media = []; state = []; speed = []; duplex = []; device = []; for(var i = 0; i < data.length; i++) { if(data[i]) { link.push(data[i].substring(0, data[0].indexOf('MEDIA')).trim()); media.push(data[i].substring(data[0].indexOf('MEDIA'), data[0].indexOf('STATE')).trim()); state.push(data[i].substring(data[0].indexOf('STATE'), data[0].indexOf('SPEED')).trim()); speed.push(data[i].substring(data[0].indexOf('SPEED'), data[0].indexOf('DUPLEX')).trim()); duplex.push(data[i].substring(data[0].indexOf('DUPLEX'), data[0].indexOf('DEVICE')).trim()); device.push(data[i].substring(data[0].indexOf('DEVICE'), data[i].length).trim()); } } res.render('show-phys', { title: 'Show-phys', link: link, media: media }); }) }); router.get('/show-vnic', function(req, res, next) { exec('dladm', ['show-vnic'], function(err, data) { console.log(err); console.log(data); data = data.split(os.EOL); link = []; over = []; speed = []; macaddress = []; macaddrtype = []; vid = []; for(var i = 0; i < data.length; i++) { if(data[i]) { link.push(data[i].substring(0, data[0].indexOf('OVER')).trim()); over.push(data[i].substring(data[0].indexOf('OVER'), data[0].indexOf('SPEED')).trim()); speed.push(data[i].substring(data[0].indexOf('SPEED'), data[0].indexOf('MACADDRESS')).trim()); macaddress.push(data[i].substring(data[0].indexOf('MACADDRESS'), data[0].indexOf('MACADDRTYPE')).trim()); macaddrtype.push(data[i].substring(data[0].indexOf('MACADDRTYPE'), data[0].indexOf('VID')).trim()); vid.push(data[i].substring(data[0].indexOf('VID'), data[i].length).trim()); } } res.render('show-vnic', { title: 'Show-vnic', link:link, over:over, speed:speed, macaddress:macaddress, macaddrtype:macaddrtype, vid:vid }); }); }); router.get('/list-zones', function(req, res, next) { exec('zoneadm', ['list', '-cv'], function(err, data) { console.log(err); console.log(data); data = data.split(os.EOL); zone = []; id = []; name = []; status = []; zone_path = []; brand = []; ip = []; for(var i = 0; i < data.length; i++) { if(data[i]) { data_w = data[i].trim().split(/[ ]+/); console.log(data_w); if(data_w.length == 6) { id.push(data_w[0].trim()); name.push(data_w[1].trim()); status.push(data_w[2].trim()); zone_path.push(data_w[3].trim()); brand.push(data_w[4].trim()); ip.push(data_w[5].trim()); } } } res.render('list-zones', { title: 'List zones', id:id, name:name, status:status, zone_path:zone_path, brand:brand, ip:ip }); }); }); router.get('/list-zfs', function(req, res, next) { exec('zfs', ['list'], function(err, data) { console.log(err); console.log(data); data = data.split(os.EOL); data_w = data[0].split(/[ ]+/); console.log(data_w); name = []; used = []; avail = []; refer = []; mountpoint = []; for(var i = 0; i < data.length; i++) { if(data[i]) { data_w = data[i].split(/[ ]+/); if(data_w.length == 5) { name.push(data_w[0].trim()); used.push(data_w[1].trim()); avail.push(data_w[2].trim()); refer.push(data_w[3].trim()); mountpoint.push(data_w[4].trim()); } } } res.render('list-zfs', { title: 'List ZFS', name: name, used: used, avail:avail, refer:refer, mountpoint:mountpoint }); }); }); router.get('/list-svc', function(req, res, next) { exec('svcs', ['-a'], function(err, data) { console.log(err); console.log(data); data = data.split(os.EOL); data_w = data[0].split(/[ ]+/); console.log(data_w); state = []; stime = []; fmri = []; for(var i = 0; i < data.length; i++) { if(data[i]) { data_w = data[i].split(/[ ]+/); if(data_w.length == 3) { state.push(data_w[0].trim()); stime.push(data_w[1].trim()); fmri.push(data_w[2].trim()); } } } res.render('list-svc', { title: 'List SVC', state:state, stime:stime, fmri:fmri }); }); }); router.get('/list-zpool', function(req, res, next) { exec('zpool', ['list'], function(err, data) { console.log(err); console.log(data); data = data.split(os.EOL); data_w = data[0].split(/[ ]+/); console.log(data_w); name = []; size = []; alloc = []; free = []; expandsz = []; frag = []; cap = []; dedup = []; health = []; altroot = []; for(var i = 0; i < data.length; i++) { if(data[i]) { data_w = data[i].split(/[ ]+/); if(data_w.length == 10) { name.push(data_w[0].trim()); size.push(data_w[1].trim()); alloc.push(data_w[2].trim()); free.push(data_w[3].trim()); expandsz.push(data_w[4].trim()); frag.push(data_w[5].trim()); cap.push(data_w[6].trim()); dedup.push(data_w[7].trim()); health.push(data_w[8].trim()); altroot.push(data_w[9].trim()); } } } res.render('list-zpool', { title: 'List Zpool', name:name, size:size, alloc:alloc, free:free, expandsz:expandsz, frag:frag, cap:cap, dedup:dedup, health:health, altroot:altroot }); }); }); router.get('/prstat', function(req, res, next) { exec('prstat', ['-Z', '0', '1'], function(err, data) { console.log(err); console.log(data); data = data.substring(data.indexOf('ZONEID'), data.indexOf('Total')); data = data.split(os.EOL); data_w = data[0].trim().split(/[ ]+/); console.log(data_w); zoneid = []; nproc = []; swap = []; rss = []; memory = []; time = []; cpu = []; zone = []; for(var i = 0; i < data.length; i++) { if(data[i]) { data_w = data[i].trim().split(/[ ]+/); if(data_w.length == 8) { zoneid.push(data_w[0].trim()); nproc.push(data_w[1].trim()); swap.push(data_w[2].trim()); rss.push(data_w[3].trim()); memory.push(data_w[4].trim()); time.push(data_w[5].trim()); cpu.push(data_w[6].trim()); zone.push(data_w[7].trim()); } } } res.render('prstat', { title: 'Prstat', zoneid:zoneid, nproc:nproc, swap:swap, rss:rss, memory:memory, time:time, cpu:cpu, zone:zone }); }); }); module.exports = router;