added chassis()

This commit is contained in:
Sebastian Hildebrandt 2019-01-13 17:53:33 +01:00
parent d761c29e1f
commit ad2870c0a8
4 changed files with 201 additions and 4 deletions

View File

@ -130,17 +130,25 @@ I also created a nice little command line tool called [mmon][mmon-github-url] (
| | serial | X | X | X | X | | serial number | | | serial | X | X | X | X | | serial number |
| | uuid | X | X | X | X | | UUID | | | uuid | X | X | X | X | | UUID |
| | sku | X | X | | X | | SKU number | | | sku | X | X | | X | | SKU number |
| si.bios(cb) | {...} | X | X | X | X | | hardware information | | si.bios(cb) | {...} | X | X | X | X | | bios information |
| | vendor | X | X | X | X | | e.g. 'AMI' | | | vendor | X | X | X | X | | e.g. 'AMI' |
| | version | X | X | | X | | version | | | version | X | X | | X | | version |
| | releaseDate | X | X | | X | | release date | | | releaseDate | X | X | | X | | release date |
| | revision | X | X | | X | | revision | | | revision | X | X | | X | | revision |
| si.baseboard(cb) | {...} | X | X | X | X | | hardware information | | si.baseboard(cb) | {...} | X | X | X | X | | baseboard information |
| | manufacturer | X | X | X | X | | e.g. 'ASUS' | | | manufacturer | X | X | X | X | | e.g. 'ASUS' |
| | model | X | X | X | X | | model / product name | | | model | X | X | X | X | | model / product name |
| | version | X | X | X | X | | version | | | version | X | X | X | X | | version |
| | serial | X | X | X | X | | serial number | | | serial | X | X | X | X | | serial number |
| | assetTag | X | X | X | X | | asset tag | | | assetTag | X | X | X | X | | asset tag |
| si.chassis(cb) | {...} | X | X | X | X | | chassis information |
| | manufacturer | X | X | X | X | | e.g. 'MSI' |
| | model | X | X | X | X | | model / product name |
| | type | X | X | X | X | | model / product name |
| | version | X | X | X | X | | version |
| | serial | X | X | X | X | | serial number |
| | assetTag | X | X | X | X | | asset tag |
| | sku | | | | X | | SKU number |
#### 3. CPU, Memory, Disks, Battery, Graphics #### 3. CPU, Memory, Disks, Battery, Graphics

View File

@ -136,7 +136,7 @@
<td>X</td> <td>X</td>
<td>X</td> <td>X</td>
<td></td> <td></td>
<td>hardware information</td> <td>bios information</td>
</tr> </tr>
<tr> <tr>
<td></td> <td></td>
@ -186,7 +186,7 @@
<td>X</td> <td>X</td>
<td>X</td> <td>X</td>
<td></td> <td></td>
<td>hardware information</td> <td>baseboard information</td>
</tr> </tr>
<tr> <tr>
<td></td> <td></td>
@ -238,6 +238,86 @@
<td></td> <td></td>
<td>asset tag</td> <td>asset tag</td>
</tr> </tr>
<tr>
<td>si.chassis(cb)</td>
<td>{...}</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td></td>
<td>chassis information</td>
</tr>
<tr>
<td></td>
<td>manufacturer</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td></td>
<td>e.g. 'ASUS'</td>
</tr>
<tr>
<td></td>
<td>model</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td></td>
<td>model / product name</td>
</tr>
<tr>
<td></td>
<td>type</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td></td>
<td>chassis type e.g. 'desktop'</td>
</tr>
<tr>
<td></td>
<td>version</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td></td>
<td>version</td>
</tr>
<tr>
<td></td>
<td>serial</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td></td>
<td>serial number</td>
</tr>
<tr>
<td></td>
<td>assetTag</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td></td>
<td>asset tag</td>
</tr>
<tr>
<td></td>
<td>sku</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td>X</td>
<td></td>
<td>SKU number</td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>

View File

@ -77,6 +77,7 @@ function getStaticData(callback) {
system.system(), system.system(),
system.bios(), system.bios(),
system.baseboard(), system.baseboard(),
system.chassis(),
osInfo.osInfo(), osInfo.osInfo(),
osInfo.uuid(), osInfo.uuid(),
osInfo.versions(), osInfo.versions(),
@ -309,6 +310,7 @@ exports.version = version;
exports.system = system.system; exports.system = system.system;
exports.bios = system.bios; exports.bios = system.bios;
exports.baseboard = system.baseboard; exports.baseboard = system.baseboard;
exports.chassis = system.chassis;
exports.time = osInfo.time; exports.time = osInfo.time;
exports.osInfo = osInfo.osInfo; exports.osInfo = osInfo.osInfo;

View File

@ -429,4 +429,111 @@ function baseboard(callback) {
exports.baseboard = baseboard; exports.baseboard = baseboard;
function chassis(callback) {
const chassisTypes = ['Other',
'Unknown',
'Desktop',
'Low Profile Desktop',
'Pizza Box',
'Mini Tower',
'Tower',
'Portable',
'Laptop',
'Notebook',
'Hand Held',
'Docking Station',
'All in One',
'Sub Notebook',
'Space-Saving',
'Lunch Box',
'Main System Chassis',
'Expansion Chassis',
'SubChassis',
'Bus Expansion Chassis',
'Peripheral Chassis',
'Storage Chassis',
'Rack Mount Chassis',
'Sealed-Case PC']
return new Promise((resolve) => {
process.nextTick(() => {
let result = {
manufacturer: '',
model: '',
type: '',
version: '',
serial: '-',
assetTag: '-',
sku: '',
};
let cmd = '';
if (_linux || _freebsd || _openbsd) {
const cmd = `echo -n "chassis_asset_tag: "; cat /sys/devices/virtual/dmi/id/chassis_asset_tag 2>&1;
echo -n "chassis_serial: "; cat /sys/devices/virtual/dmi/id/chassis_serial 2>&1;
echo -n "chassis_type: "; cat /sys/devices/virtual/dmi/id/chassis_type 2>&1;
echo -n "chassis_vendor: "; cat /sys/devices/virtual/dmi/id/chassis_vendor 2>&1;
echo -n "chassis_version: "; cat /sys/devices/virtual/dmi/id/chassis_version 2>&1;`;
exec(cmd, function (error, stdout) {
let lines = stdout.toString().split('\n');
result.manufacturer = util.getValue(lines, 'chassis_vendor');
result.type = util.getValue(lines, 'chassis_type');
result.version = util.getValue(lines, 'chassis_version');
result.serial = util.getValue(lines, 'chassis_serial');
result.assetTag = util.getValue(lines, 'chassis_asset_tag');
if (result.serial.toLowerCase().indexOf('o.e.m.') !== -1) result.serial = '-';
if (result.assetTag.toLowerCase().indexOf('o.e.m.') !== -1) result.assetTag = '-';
if (callback) { callback(result); }
resolve(result);
});
}
if (_darwin) {
exec('ioreg -c IOPlatformExpertDevice -d 2', function (error, stdout) {
if (!error) {
let lines = stdout.toString().replace(/[<>"]/g, '').split('\n');
result.manufacturer = util.getValue(lines, 'manufacturer', '=', true);
result.model = util.getValue(lines, 'model', '=', true);
result.version = util.getValue(lines, 'version', '=', true);
result.serial = util.getValue(lines, 'ioplatformserialnumber', '=', true);
result.assetTag = util.getValue(lines, 'board-id', '=', true);
}
if (callback) { callback(result); }
resolve(result);
});
}
if (_sunos) {
if (callback) { callback(result); }
resolve(result);
}
if (_windows) {
try {
exec(util.getWmic() + ' path Win32_SystemEnclosure get /value', util.execOptsWin, function (error, stdout) {
if (!error) {
let lines = stdout.toString().split('\r\n');
result.manufacturer = util.getValue(lines, 'manufacturer', '=');
result.model = util.getValue(lines, 'model', '=');
const ctype = parseInt(util.getValue(lines, 'ChassisTypes', '='));
result.type = (ctype && !isNaN(ctype) && ctype < chassisTypes.length) ? chassisTypes[ctype] : '';
result.version = util.getValue(lines, 'version', '=');
result.serial = util.getValue(lines, 'serialnumber', '=');
result.assetTag = util.getValue(lines, 'partnumber', '=');
result.sku = util.getValue(lines, 'sku', '=');
}
if (callback) { callback(result); }
resolve(result);
});
} catch (e) {
if (callback) { callback(result); }
resolve(result);
}
}
});
});
}
exports.chassis = chassis;