Sha256: b4a6a03caefbfdf3c6c5f1eb34840a76e79bcb2099e4a6683b0cd1351f93a81d

Contents?: true

Size: 1.45 KB

Versions: 13

Compression:

Stored size: 1.45 KB

Contents

require 'time'

# A module to gather uptime facts
#
module Facter::Util::Uptime
  def self.get_uptime_seconds_unix
    uptime_proc_uptime or uptime_sysctl or uptime_kstat or uptime_who_dash_b
  end

  def self.get_uptime_seconds_win
    require 'facter/util/wmi'

    last_boot = ""
    Facter::Util::WMI.execquery("select * from Win32_OperatingSystem").each do |x|
      last_boot = x.LastBootupTime
    end
    self.compute_uptime(Time.parse(last_boot.split('.').first))
  end

  private

  def self.uptime_proc_uptime
    if output = Facter::Util::Resolution.exec("/bin/cat #{uptime_file} 2>/dev/null")
      output.chomp.split(" ").first.to_i
    end
  end

  def self.uptime_sysctl
    if output = Facter::Util::Resolution.exec("#{uptime_sysctl_cmd} 2>/dev/null")
      compute_uptime(Time.at(output.unpack('L').first))
    end
  end

  def self.uptime_kstat
    if output = Facter::Util::Resolution.exec("#{uptime_kstat_cmd} 2>/dev/null")
      compute_uptime(Time.at(output.chomp.split(/\s/).last.to_i))
    end
  end

  def self.uptime_who_dash_b
    if output = Facter::Util::Resolution.exec("#{uptime_who_cmd} 2>/dev/null")
      compute_uptime(Time.parse(output))
    end
  end

  def self.compute_uptime(time)
    (Time.now - time).to_i
  end

  def self.uptime_file
    "/proc/uptime"
  end

  def self.uptime_sysctl_cmd
    'sysctl -b kern.boottime'
  end

  def self.uptime_kstat_cmd
    'kstat -p unix:::boot_time'
  end

  def self.uptime_who_cmd
    'who -b'
  end
end

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
supply_drop-0.11.0 examples/vendored-puppet/vendor/facter-1.6.4/lib/facter/util/uptime.rb
supply_drop-0.10.2 examples/vendored-puppet/vendor/facter-1.6.4/lib/facter/util/uptime.rb
supply_drop-0.10.1 examples/vendored-puppet/vendor/facter-1.6.4/lib/facter/util/uptime.rb
supply_drop-0.10.0 examples/vendored-puppet/vendor/facter-1.6.4/lib/facter/util/uptime.rb
supply_drop-0.9.0 examples/vendored-puppet/vendor/facter-1.6.4/lib/facter/util/uptime.rb
supply_drop-0.8.1 examples/vendored-puppet/vendor/facter-1.6.4/lib/facter/util/uptime.rb
supply_drop-0.8.0 examples/vendored-puppet/vendor/facter-1.6.4/lib/facter/util/uptime.rb
supply_drop-0.7.0 examples/vendored-puppet/vendor/facter-1.6.4/lib/facter/util/uptime.rb
supply_drop-0.6.1 examples/vendored-puppet/vendor/facter-1.6.4/lib/facter/util/uptime.rb
supply_drop-0.6.0 examples/vendored-puppet/vendor/facter-1.6.4/lib/facter/util/uptime.rb
facter-1.6.4 lib/facter/util/uptime.rb
facter-1.6.3 lib/facter/util/uptime.rb
facter-1.6.2 lib/facter/util/uptime.rb