NAME

Sys::Info::OS - Detailed os information.

SYNOPSIS

use Sys::Info;
my $info = Sys::Info->new;
my $os   = $info->os(%options);

or

use Sys::Info::OS;
my $os = Sys::Info::OS->new(%options);

Example:

use Data::Dumper;

warn "Collected information can be incomplete\n" if $os->is_unknown;

my %fs = $os->fs;
print Data::Dumper->Dump([\%fs], ['*FILE_SYSTEM']);

print  "B1ll G4teZ rull4z!\n" if $os->is_windows;
print  "Pinguin detected!\n"  if $os->is_linux;
if($os->is_windows) {
   printf "This is a %s based system\n", $os->is_winnt ? 'NT' : '9.x';
}
printf "Operating System: %s\n", $os->name( long => 1 );

my $user = $os->login_name_real || $os->login_name || 'User';
print "$user, You've Got The P.O.W.E.R.!\n" if $os->is_root;

if(my $up = $os->uptime) {
   my $tick = $os->tick_count;
   printf "Running since %s\n"   , scalar localtime $up;
   printf "Uptime: %.2f hours\n" , $tick / (60*60      ); # probably windows
   printf "Uptime: %.2f days\n"  , $tick / (60*60*24   ); # might be windows
   printf "Uptime: %.2f months\n", $tick / (60*60*24*30); # hmm... smells like tux
}

DESCRIPTION

Supplies detailed operating system information.

METHODS

new

Object constructor.

name

Returns the OS name. Supports these named parameters: edition, long:

# also include the edition info if present
$os->name( edition => 1 );

This will return the long OS name (with build number, etc.):

# also include the edition info if present
$os->name( long => 1, edition => 1 );

version

Returns the OS version.

build

Returns the OS build number or build date, depending on the system.

uptime

Returns the uptime as a unix timestamp.

tick_count

Returns the uptime in seconds since the machine booted.

node_name

Machine name

domain_name

Returns the network domain name.

Synonyms:

workgroup

login_name

Returns the name of the effective user. Supports parameters in name => value format. Accepted parameters: real:

my $user = $os->login_name( real => 1 ) || $os->login_name;

ip

Returns the IP number.

fs

Returns an info hash about the filesystem. The contents of the hash can vary among different systems.

host_name

time_zone

product_type

UTILITY METHODS

These are some useful utility methods.

is_windows

Returns true if the os is windows. Synonyms:

is_win32
is_win

is_winnt

Returns true if the OS is a NT based system (NT/2000/XP/2003).

Always returns false if you are not under windows or you are not under a NT based system.

is_win95

Returns true if the OS is a 9x based system (95/98/Me).

Always returns false if you are not under Windows or Windows9x.

Synonyms:

is_win9x

is_linux

Returns true if the os is linux. Synonyms:

is_lin

is_unknown

Returns true if this module does not support the OS directly.

is_root

Returns true if the current user has admin rights. Synonyms:

is_admin
is_admin_user
is_adminuser
is_root_user
is_rootuser
is_super_user
is_superuser
is_su

CAVEATS

  • I don't have any access to any other os, so this module (currently) only supports Windows & Linux. Windows support is better.

  • Win32::IsAdminUser() implemented in 5.8.4. If your ActivePerl is older than this, is_admin method will always returns false. (There may be a workaround for that).

  • Contents of the filesystem hash may change in further releases.

  • Filesystem [Windows]

    File system information can not be extracted under restricted environments. If this is the case, we'll get an access is denied error.

SEE ALSO

Win32, POSIX, Sys::Info, http://msdn.microsoft.com/library/en-us/sysinfo/base/osversioninfoex_str.asp.

AUTHOR

Burak Gürsoy, <burak@cpan.org>

COPYRIGHT

Copyright 2006-2008 Burak Gürsoy. All rights reserved.

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 366:

Non-ASCII character seen before =encoding in 'Gürsoy,'. Assuming CP1252