class Sys::Uname
The Uname
class encapsulates information about the system.
The Uname
class encapsulates uname (platform) information.
Constants
- BUFSIZE
- CTL_HW
- HW_MODEL
- SI_ARCHITECTURE
- SI_DHCP_CACHE
- SI_HOSTNAME
- SI_HW_PROVIDER
- SI_HW_SERIAL
- SI_ISALIST
- SI_MACHINE
- SI_PLATFORM
- SI_RELEASE
- SI_SRPC_DOMAIN
- SI_SYSNAME
- SI_VERSION
- UnameStruct
The
UnameStruct
is used to store platform information for some methods.- VERSION
The version of the sys-uname gem.
Public Class Methods
The basic instruction set architecture of the current system, e.g. sparc, i386, etc.
# File lib/sys/unix/uname.rb, line 256 def self.architecture uname.architecture end
The string consisting of the ASCII hexidecimal encoding of the name of the interface configured by boot(1M) followed by the DHCPACK reply from the server.
# File lib/sys/unix/uname.rb, line 270 def self.dhcp_cache uname.dhcp_cache end
The name of the of the hardware provider.
# File lib/sys/unix/uname.rb, line 290 def self.hw_provider uname.hw_provider end
The ASCII representation of the hardware-specific serial number of the physical machine on which the function is executed.
# File lib/sys/unix/uname.rb, line 284 def self.hw_serial uname.hw_serial.to_i end
The variant instruction set architectures executable on the current system.
# File lib/sys/unix/uname.rb, line 277 def self.isa_list uname.isa_list end
Returns the machine hardware type.
Example:
Uname.machine # => 'i686'
# File lib/sys/unix/uname.rb, line 236 def self.machine uname.machine end
Returns the model type.
Example:
Uname.model # => 'MacBookPro5,3'
# File lib/sys/unix/uname.rb, line 247 def self.model uname.model end
Returns the name of this node within the communications network to which this node is attached, if any. This is often, but not necessarily, the same as the host name.
Example:
Uname.nodename # => 'your_host.foo.com'
# File lib/sys/unix/uname.rb, line 206 def self.nodename uname.nodename end
The specific model of the hardware platform, e.g Sun-Blade-1500, etc.
# File lib/sys/unix/uname.rb, line 262 def self.platform uname.platform end
Returns the current release level of your operating system.
Example:
Uname.release # => '2.2.16-3'
# File lib/sys/unix/uname.rb, line 216 def self.release uname.release end
The Secure Remote Procedure Call domain name.
# File lib/sys/unix/uname.rb, line 296 def self.srpc_domain uname.srpc_domain end
Returns the name of this implementation of the operating system.
Example:
Uname.sysname # => 'SunOS'
# File lib/sys/unix/uname.rb, line 194 def self.sysname uname.sysname end
Returns a struct that contains the sysname, nodename, machine, version and release of your system.
On OS X it will also include the model.
On Solaris, it will also include the architecture and platform.
On HP-UX, it will also include the id_number.
Example:
require 'sys/uname' p Sys::Uname.uname
# File lib/sys/unix/uname.rb, line 133 def self.uname utsname = UnameFFIStruct.new if uname_c(utsname) < 0 raise Error, "uname() function call failed" end struct = UnameStruct.new struct[:sysname] = utsname[:sysname].to_s struct[:nodename] = utsname[:nodename].to_s struct[:release] = utsname[:release].to_s struct[:version] = utsname[:version].to_s struct[:machine] = utsname[:machine].to_s if RbConfig::CONFIG['host_os'] =~ /darwin|bsd/i struct[:model] = get_model() end if RbConfig::CONFIG['host_os'] =~ /sunos|solaris/i struct[:architecture] = get_si(SI_ARCHITECTURE) struct[:platform] = get_si(SI_PLATFORM) struct[:hw_serial] = get_si(SI_HW_SERIAL) struct[:hw_provider] = get_si(SI_HW_PROVIDER) struct[:srpc_domain] = get_si(SI_SRPC_DOMAIN) struct[:isa_list] = get_si(SI_ISALIST) struct[:dhcp_cache] = get_si(SI_DHCP_CACHE) # FFI and Solaris don't get along so well, so we try again struct[:sysname] = get_si(SI_SYSNAME) if struct.sysname.empty? struct[:nodename] = get_si(SI_HOSTNAME) if struct.nodename.empty? struct[:release] = get_si(SI_RELEASE) if struct.release.empty? struct[:version] = get_si(SI_VERSION) if struct.version.empty? struct[:machine] = get_si(SI_MACHINE) if struct.machine.empty? end if RbConfig::CONFIG['host_os'] =~ /hpux/i struct[:id_number] = utsname[:__id_number].to_s end if RbConfig::CONFIG['host_os'] =~ /linux/i struct[:domainname] = utsname[:domainname].to_s end # Let's add a members method that works for testing and compatibility if struct.members.nil? struct.instance_eval(%Q{ def members @table.keys.map{ |k| k.to_s } end }) end struct.freeze end
Returns the current version level of your operating system.
Example:
Uname.version # => '5.9'
# File lib/sys/unix/uname.rb, line 226 def self.version uname.version end
Private Class Methods
There is a bug in win32ole where uint64 types are returned as a String rather than a Fixnum/Bignum. This deals with that for now.
# File lib/sys/windows/uname.rb, line 510 def self.convert(str) return nil if str.nil? # Don't turn nil into 0 return str.to_i end
Returns the model for systems that define sysctl().
# File lib/sys/unix/uname.rb, line 305 def self.get_model buf = 0.chr * BUFSIZE mib = FFI::MemoryPointer.new(:int, 2).write_array_of_int([CTL_HW, HW_MODEL]) size = FFI::MemoryPointer.new(:long, 1).write_int(buf.size) sysctl(mib, 2, buf, size, nil, 0) buf.strip end
Returns the various sysinfo information based on flag
.
# File lib/sys/unix/uname.rb, line 319 def self.get_si(flag) buf = 0.chr * BUFSIZE sysinfo(flag, buf, BUFSIZE) buf.strip end
Converts a string in the format ‘20040703074625.015625-360’ into a Ruby Time object.
# File lib/sys/windows/uname.rb, line 502 def self.parse_ms_date(str) return if str.nil? return Time.parse(str.split('.')[0]) end