diff options
-rw-r--r-- | lib/facter/util/manufacturer.rb | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/facter/util/manufacturer.rb b/lib/facter/util/manufacturer.rb index b48ffc7..33ef942 100644 --- a/lib/facter/util/manufacturer.rb +++ b/lib/facter/util/manufacturer.rb @@ -3,16 +3,23 @@ module Facter::Manufacturer def self.dmi_find_system_info(name) - return nil unless FileTest.exists?("/usr/sbin/dmidecode") - - output=%x{/usr/sbin/dmidecode 2>/dev/null} + case Facter.value(:kernel) + when 'Linux' + return nil unless FileTest.exists?("/usr/sbin/dmidecode") + + output=%x{/usr/sbin/dmidecode 2>/dev/null} + when 'OpenBSD', 'NetBSD', 'FreeBSD' + return nil unless FileTest.exists?("/usr/local/sbin/dmidecode") + + output=%x{/usr/local/sbin/dmidecode 2>/dev/null} + end name.each_pair do |key,v| v.each do |value| output.split("Handle").each do |line| if line =~ /#{key}/ and line =~ /#{value} (\w.*)\n*./ result = $1 Facter.add(value.chomp(':').gsub(' ','')) do - confine :kernel => :linux + confine :kernel => [ :linux, :freebsd, :netbsd, :openbsd ] setcode do result end |