| Module | Facter::Manufacturer |
| In: |
lib/facter/util/manufacturer.rb
|
mamufacturer.rb Support methods for manufacturer specific facts
# File lib/facter/util/manufacturer.rb, line 5
5: def self.dmi_find_system_info(name)
6: splitstr="Handle"
7: case Facter.value(:kernel)
8: when 'Linux'
9: return nil unless FileTest.exists?("/usr/sbin/dmidecode")
10:
11: output=%x{/usr/sbin/dmidecode 2>/dev/null}
12: when 'OpenBSD', 'FreeBSD'
13: return nil unless FileTest.exists?("/usr/local/sbin/dmidecode")
14:
15: output=%x{/usr/local/sbin/dmidecode 2>/dev/null}
16: when 'NetBSD'
17: return nil unless FileTest.exists?("/usr/pkg/sbin/dmidecode")
18:
19: output=%x{/usr/pkg/sbin/dmidecode 2>/dev/null}
20: when 'SunOS'
21: return nil unless FileTest.exists?("/usr/sbin/smbios")
22: splitstr="ID SIZE TYPE"
23: output=%x{/usr/sbin/smbios 2>/dev/null}
24:
25: else
26: return
27: end
28: name.each_pair do |key,v|
29: v.each do |v2|
30: v2.each_pair do |value,facterkey|
31: output.split(splitstr).each do |line|
32: if line =~ /#{key}/ and ( line =~ /#{value} 0x\d+ \(([-\w].*)\)\n*./ or line =~ /#{value} ([-\w].*)\n*./ )
33: result = $1
34: Facter.add(facterkey) do
35: confine :kernel => [ :linux, :freebsd, :netbsd, :openbsd, :sunos ]
36: setcode do
37: result
38: end
39: end
40: end
41: end
42: end
43: end
44: end
45: end