class Facter::Util::Facts::UptimeParser
Constants
- SECS_IN_AN_HOUR
- SECS_IN_A_DAY
- SECS_IN_A_MINUTE
Public Class Methods
Source
# File lib/facter/util/facts/uptime_parser.rb, line 16 def uptime_seconds_unix uptime_proc_uptime || uptime_sysctl || uptime_executable end
Private Class Methods
Source
# File lib/facter/util/facts/uptime_parser.rb, line 97 def calculate_days(output) return unless output =~ /(\d+) day(?:s|\(s\))?,/ SECS_IN_A_DAY * Regexp.last_match(1).to_i end
Source
# File lib/facter/util/facts/uptime_parser.rb, line 83 def calculate_days_hours(output) return unless output =~ /(\d+) day(?:s|\(s\))?,\s+(\d+) hr(?:s|\(s\))?,/ SECS_IN_A_DAY * Regexp.last_match(1).to_i + SECS_IN_AN_HOUR * Regexp.last_match(2).to_i end
Source
# File lib/facter/util/facts/uptime_parser.rb, line 75 def calculate_days_hours_minutes(output) return unless output =~ /(\d+) day(?:s|\(s\))?,?\s+(\d+):-?(\d+)/ SECS_IN_A_DAY * Regexp.last_match(1).to_i + SECS_IN_AN_HOUR * Regexp.last_match(2).to_i + SECS_IN_A_MINUTE * Regexp.last_match(3).to_i end
Regexp handles Solaris, AIX, HP-UX, and Tru64. ‘day(?:s|(s))?’ says maybe ‘day’, ‘days’,
or 'day(s)', and don't set $2.
Source
# File lib/facter/util/facts/uptime_parser.rb, line 90 def calculate_days_minutes(output) return unless output =~ /(\d+) day(?:s|\(s\))?,\s+(\d+) min(?:s|\(s\))?,/ SECS_IN_A_DAY * Regexp.last_match(1).to_i + SECS_IN_A_MINUTE * Regexp.last_match(2).to_i end
Source
# File lib/facter/util/facts/uptime_parser.rb, line 113 def calculate_hours(output) return unless output =~ /(\d+) hr(?:s|\(s\))?,/ SECS_IN_AN_HOUR * Regexp.last_match(1).to_i end
Source
# File lib/facter/util/facts/uptime_parser.rb, line 106 def calculate_hours_minutes(output) return unless output =~ /up\s+(\d+):-?(\d+),/ SECS_IN_AN_HOUR * Regexp.last_match(1).to_i + SECS_IN_A_MINUTE * Regexp.last_match(2).to_i end
must anchor to ‘up’ to avoid matching time of day at beginning of line. Certain versions of uptime on Solaris may insert a ‘-’ into the minutes field.
Source
# File lib/facter/util/facts/uptime_parser.rb, line 119 def calculate_minutes(output) return unless output =~ /(\d+) min(?:s|\(s\))?,/ SECS_IN_A_MINUTE * Regexp.last_match(1).to_i end
Source
# File lib/facter/util/facts/uptime_parser.rb, line 68 def compute_uptime(time) (Time.now - time).to_i end
Source
# File lib/facter/util/facts/uptime_parser.rb, line 56 def output_calculator_methods %i[ calculate_days_hours_minutes calculate_days_hours calculate_days_minutes calculate_days calculate_hours_minutes calculate_hours calculate_minutes ] end
Source
# File lib/facter/util/facts/uptime_parser.rb, line 34 def uptime_executable output = Facter::Core::Execution.execute(uptime_executable_cmd, logger: @log) return unless output up = 0 output_calculator_methods.find { |method| up = send(method, output) } up || 0 end
Source
# File lib/facter/util/facts/uptime_parser.rb, line 52 def uptime_executable_cmd 'uptime' end
Source
# File lib/facter/util/facts/uptime_parser.rb, line 44 def uptime_file '/proc/uptime' end
Source
# File lib/facter/util/facts/uptime_parser.rb, line 22 def uptime_proc_uptime output = Facter::Core::Execution.execute("/bin/cat #{uptime_file}", logger: @log) output.chomp.split(' ').first.to_i unless output.empty? end
Source
# File lib/facter/util/facts/uptime_parser.rb, line 28 def uptime_sysctl output = Facter::Core::Execution.execute("sysctl -n #{uptime_sysctl_variable}", logger: @log) compute_uptime(Time.at(output.match(/\d+/)[0].to_i)) unless output.empty? end
Source
# File lib/facter/util/facts/uptime_parser.rb, line 48 def uptime_sysctl_variable 'kern.boottime' end