よかろうもん!

アプリからインフラまで幅広くこなすいまどきのクラウドエンジニアが記す技術ブログ

Rubyでシステム情報の判別

facterというプラグインを利用すればRubyプログラム内でプラットフォームの判別をすることなく、簡単にシステム情報を取得することが可能です。
rubyrubygemsがインストールされている環境で、facterをインストールするだけでOKです。

$ gem install facter

では、どのような情報を取得できるのかirbで試してみましょう。

irb(main):001:0> require 'rubygems'
irb(main):002:0>require 'facter'
irb(main):003:0>Facter.value(:operatingsystem)
=> "Debian"
irb(main):004:0> Facter.value(:kernel)
=> "Linux"

ね、簡単でしょ。

他にも以下のようなシステム情報を取得することが可能です。

architecture => i386
facterversion => 1.5.2
hardwareisa => unknown
hardwaremodel => i686
hostname => interu-xenU
id => root
interfaces => eth0,eth1,eth1:0,sit0
ipaddress => 秘密
ipaddress_eth0 => 秘密
ipaddress_eth1 => 秘密
ipaddress_eth1:0 => 秘密
kernel => Linux
kernelrelease => 2.6.18-6-xen-686
kernelversion => 2.6.18
macaddress => 秘密
macaddress_eth0 => 秘密
macaddress_eth1 => 秘密
macaddress_eth1:0 => 秘密
memoryfree => 332.61 MB
memorysize => 512.14 MB
netmask => 255.255.255.0
netmask_eth0 => 255.255.255.0
netmask_eth1 => 255.255.255.0
netmask_eth1:0 => 255.255.255.0
operatingsystem => Debian
operatingsystemrelease => 4.0
processor0 => Intel(R) Pentium(R) D CPU 3.20GHz
processor1 => Intel(R) Pentium(R) D CPU 3.20GHz
processorcount => 2
ps => ps -ef
puppetversion => 0.24.7
rubysitedir => /usr/local/ruby/1.8.7/lib/ruby/site_ruby/1.8
rubyversion => 1.8.7
sshdsakey => 秘密
sshrsakey => 秘密
swapfree => 511.97 MB
swapsize => 511.99 MB
uniqueid => 007fxxxx
virtual => xenu

上記の結果は、Debian(Xen domainU)で試した結果です。
ちなみにWindowsでも利用することは可能です。

irb(main):001:0> require 'facter'
=> true
irb(main):002:0> Facter.value(:operatingsystem)
=> "windows"
irb(main):003:0> Facter.value(:kernel)
=> "windows"

システム情報をRubyプログラム内で取得したい場合は、Gemパッケージのfacterを利用してみてはいかがでしょうか。