Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

uptime for NT/2K

by idnopheq (Chaplain)
on Apr 23, 2001 at 14:15 UTC ( #74673=sourcecode: print w/replies, xml ) Need Help??
Category: NT Admin
Author/Contact Info idnopheq
Description: uptime - show how long the system has been up

The uptime command prints the current time, the length of time the system has been up, and the number of users logged on.

REQUIRES: Date::Calc

#!/usr/local/bin/perl -w
#-*-perl-*-
#

use strict;
use vars qw ( @WhoList );
use Win32;
use Win32::NetAdmin;
use Date::Calc qw( Delta_DHMS );

my ($VERSION) = '$Revision: 1.0 $' =~ /([.\d]+)/;

my $warnings = 0;

# Print a usuage message on a unknown option.

$SIG {__WARN__} = sub {
    if (substr ($_ [0], 0, 14) eq "Unknown option") {die "Usage"};
    require File::Basename;
    $0 = File::Basename::basename ($0);
    $warnings = 1;
    warn "$0: @_";
};

$SIG {__DIE__} = sub {
    require File::Basename;
    $0 = File::Basename::basename ($0);
    if (substr ($_ [0], 0,  5) eq "Usage") {
        die <<EOF;
$0 (NT Perl bin utils) $VERSION
$0 [ -h ]
EOF
    }
    die "$0: @_";
};

die "Usage" if $ARGV[0];

my $Server = "";

my @Month = (
        "Jan",
        "Feb",
        "Mar",
        "Apr",
        "May",
        "Jun",
        "Jul",
        "Aug",
        "Sep",
        "Oct",
        "Nov",
        "Dec"
        );

Win32::NetAdmin::LoggedOnUsers (
                $Server, 
                \@WhoList
                   ) 
  or die "$^E\n";

my $Reboot = time - ( Win32::GetTickCount() / 1000 );
my @Neht = localtime ( $Reboot );
my @Won = localtime ( time );

$#Neht = 5;
my @Then = reverse @Neht;
$#Won = 5;
my @Now = reverse @Won;

my @Diff = Delta_DHMS ( 
               @Then,
               @Now 
              );

my $UserPlural = "user";
$UserPlural = $UserPlural . "s" if $#WhoList > 0;

printf " %2d:%2d    up %d days, %2d:%2d, %2d %s\n", $Now[3], $Now[4], 
+$Diff[0], $Diff[1], $Diff[2], $#WhoList + 1, $UserPlural;

=pod

=head1 NAME

B<uptime> - show how long the system has been up

=head1 SYNOPSIS

B<uptime> [ -h ]

=head1 DESCRIPTION

The B<uptime> command prints the current time, the length of time the 
+system has been up, and the number of users logged on.

=head2 OPTIONS

The following options are supported:

=over 4

=item -h

Display syntax.

=back

=head1 EXAMPLE

Below is an example of the output B<uptime> provides:

C:\> uptime
 10:10    up 0 days, 18:40,  2 users

=head1 ENVIRONMENT

The working of B<uptime> is not influenced by any environment variable
+s.

=head1 BUGS

B<uptime> returns an approximate uptime.  It uses the Win32::GetTickCo
+unt() function, an imprecise mechanism.  A better way to derrive the 
+last boot is to query the event log for the most recent 6005 or 6009 
+event and grab that time.  If log files are large, this can be time c
+onsuming.

If you need this kind of resolution, use B<who -b>.

B<printf> does not seem to want to pad numbers with '0's.

=head1 STANDARDS

It does not make sense to talk about standards in a B<uptime> manual p
+age.

=head1 REVISION HISTORY

    uptime
    Revision 1.0  2000/06/22 10:05:57  idnopheq
    Initial revision

=head1 AUTHOR

The Perl implementation of B<uptime> was written by Dexter Coffin, I<i
+dnopheq@home.com>.

=head1 COPYRIGHT and LICENSE

This program is copyright by Dexter Coffin 2000.

This program is free and open software. You may use, copy, modify, dis
+tribute,
and sell this program (and any modified variants) in any way you wish,
provided you do not restrict others from doing the same.

=head1 SEE ALSO

=for html
<a href="who.html">who</a><p>

=head1 NEXT TOPIC

=cut
Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://74673]
help
Chatterbox?
[ambrus]: Corion: which coordinate system is the upside down one?
[Corion]: ambrus: "the other" ;) To me, "normal" for GUIs means (0,0) is left-upper corner of the monitor/window. But for Prima, the lower-left corner it is ;)
[Corion]: Which would be OK for mathematics and paper, for me ;)
[ambrus]: Ok, so Prima has a postscript-like coordinate system

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (8)
As of 2016-12-09 10:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:













    Results (150 votes). Check out past polls.