systeminfo/lib/nic_info.rb
2023-09-21 18:03:25 -06:00

34 lines
826 B
Ruby

# frozen_string_literal: true
require 'English'
require 'json'
class NicInfo
def self.gather_info
raw_data = `lshw -class network -json 2>&1`
unless $CHILD_STATUS.success?
return [{ model: 'No permission', manufacturer: 'No permission',
max_speed: 'No permission' }]
end
parsed_data = JSON.parse(raw_data)
nic_info = []
parsed_data.each do |data|
info = {}
info[:model] = data['product']
info[:manufacturer] = data['vendor']
# Extracting max speed if available
info[:max_speed] = data['capabilities']['speed'] if data['capabilities'] && data['capabilities']['speed']
nic_info << info
end
nic_info
rescue JSON::ParserError
[{ model: 'No permission', manufacturer: 'No permission', max_speed: 'No permission' }]
end
end