From c81292c760da552be1d094f58009fe53b15c1a58 Mon Sep 17 00:00:00 2001 From: Sebastian Hildebrandt Date: Fri, 1 Mar 2019 15:30:22 +0100 Subject: [PATCH] disklayout() added device (/dev/sda...) linux, mac --- CHANGELOG.md | 1 + README.md | 5 +++-- docs/filesystem.html | 14 ++++++++++++-- docs/history.html | 5 +++++ docs/index.html | 4 ++-- lib/filesystem.js | 17 +++++++++++++---- 6 files changed, 36 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02aa7e5..dab7928 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ For major (breaking) changes - version 3 and 2 see end of page. | Version | Date | Comment | | -------------- | -------------- | -------- | +| 4.0.13 | 2019-03-01 | `diskLayout()` added device (/dev/sda...) linux, mac | | 4.0.12 | 2019-03-01 | `diskLayout()` linux rewritten - better detection | | 4.0.11 | 2019-02-23 | `users()` fix windows (time), added @ts-check | | 4.0.10 | 2019-02-10 | `networkInterfaceDefault()` fix windows | diff --git a/README.md b/README.md index 37c594c..fee57a7 100644 --- a/README.md +++ b/README.md @@ -343,7 +343,8 @@ I also created a nice little command line tool called [mmon][mmon-github-url] ( | Function | Result object | Linux | BSD | Mac | Win | Sun | Comments | | --------------- | ------------- | ----- | ------- | --- | --- | --- | -------- | | si.diskLayout(cb) | [{...}] | X | | X | X | | physical disk layout (array) | -| | [0].type | X | | X | X | | HD, SSD | +| | [0].type | X | | X | | | e.g. /dev/sda | +| | [0].type | X | | X | X | | HD, SSD, NVMe | | | [0].name | X | | X | X | | disk name | | | [0].vendor | X | | | X | | vendor/producer | | | [0].size | X | | X | X | | size in bytes | @@ -356,7 +357,7 @@ I also created a nice little command line tool called [mmon][mmon-github-url] ( | | [0].sectorsPerTrack | | | | X | | sectors per track | | | [0].firmwareRevision | X | | X | X | | firmware revision | | | [0].serialNum | X | | X | X | | serial number | -| | [0].interfaceType | X | | | X | | | +| | [0].interfaceType | X | | | X | | SATA, PCIe, ... | | | [0].smartStatus | X | | X | X | | S.M.A.R.T Status (see Known Issues) | | si.blockDevices(cb) | [{...}] | X | | X | X | | returns array of disks, partitions,
raids and roms | | | [0].name | X | | X | X | | name | diff --git a/docs/filesystem.html b/docs/filesystem.html index 42cfc8e..cb6e77a 100644 --- a/docs/filesystem.html +++ b/docs/filesystem.html @@ -75,6 +75,16 @@ physical disk layout (array) + + + [0].device + X + + X + + + e.g. /dev/sda + [0].type @@ -83,7 +93,7 @@ X X - HD, SSD + HD, SSD, NVMe @@ -213,7 +223,7 @@ X - + SATA, PCIe, ... diff --git a/docs/history.html b/docs/history.html index 09db123..c22810c 100644 --- a/docs/history.html +++ b/docs/history.html @@ -80,6 +80,11 @@ + + 4.0.13 + 2019-03-01 + diskLayout() added device (/dev/sda...) linux, mac + 4.0.12 2019-03-01 diff --git a/docs/index.html b/docs/index.html index 18dbe82..df4e23c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -170,7 +170,7 @@
systeminformation
-
Current Version: 4.0.12
+
Current Version: 4.0.13
@@ -193,7 +193,7 @@
-
8,158
+
8,167
Lines of code
diff --git a/lib/filesystem.js b/lib/filesystem.js index 9b05e68..6553923 100644 --- a/lib/filesystem.js +++ b/lib/filesystem.js @@ -666,8 +666,14 @@ function diskLayout(callback) { } catch (e) { util.noop(); } + let interfaceType = device.tran ? device.tran.toUpperCase().trim() : ''; + if (interfaceType === 'NVME') { + mediumType = '2'; + interfaceType = 'PCIe' + } result.push({ - type: (mediumType === '0' ? 'SSD' : (mediumType === '1' ? 'HD' : (device.model && device.model.indexOf('SSD') > -1 ? 'SSD' : 'HD'))), + device: BSDName, + type: (mediumType === '0' ? 'SSD' : (mediumType === '1' ? 'HD' : (mediumType === '2' ? 'NVMe' : (device.model && device.model.indexOf('SSD') > -1 ? 'SSD' : (device.model && device.model.indexOf('NVM') > -1 ? 'NVMe' : 'HD'))))), name: device.model || '', vendor: getVendorFromModel(device.model) || (device.vendor ? device.vendor.trim() : ''), size: device.size || 0, @@ -680,7 +686,7 @@ function diskLayout(callback) { sectorsPerTrack: -1, firmwareRevision: device.rev ? device.rev.trim() : '', serialNum: device.serial ? device.serial.trim() : '', - interfaceType: device.tran ? device.tran.trim() : '', + interfaceType: interfaceType, smartStatus: 'unknown', BSDName: BSDName }); @@ -768,9 +774,10 @@ function diskLayout(callback) { } if (sizeValue) { result.push({ + device: BSDName, type: mediumType.startsWith('Solid') ? 'SSD' : 'HD', name: util.getValue(lines, 'Model', ':', true).trim(), - vendor: '', + vendor: getVendorFromModel(util.getValue(lines, 'Model', ':', true).trim()), size: sizeValue, bytesPerSector: -1, totalCylinders: -1, @@ -808,9 +815,10 @@ function diskLayout(callback) { } if (sizeValue) { result.push({ + device: BSDName, type: 'NVMe', name: util.getValue(lines, 'Model', ':', true).trim(), - vendor: '', + vendor: getVendorFromModel(util.getValue(lines, 'Model', ':', true).trim()), size: sizeValue, bytesPerSector: -1, totalCylinders: -1, @@ -884,6 +892,7 @@ function diskLayout(callback) { const status = util.getValue(lines, 'Status', '=').trim().toLowerCase(); if (size) { result.push({ + device: '', type: device.indexOf('SSD') > -1 ? 'SSD' : 'HD', // just a starting point ... better: MSFT_PhysicalDisk - Media Type ... see below name: util.getValue(lines, 'Caption', '='), vendor: util.getValue(lines, 'Manufacturer', '='),