users lists the login names of the users currently on the system in a compact, one-line format.
#!/usr/local/bin/perl -w
#-*-perl-*-
#
use strict;
use Win32::NetAdmin;
use vars qw ( @WhoList );
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 = "";
Win32::NetAdmin::LoggedOnUsers (
$Server,
\@WhoList
)
or die "$^E\n";
foreach my $UserName ( @WhoList ) {
print "$UserName\t";
}
=pod
=head1 NAME
B<users> - display a compact list of users logged in
=head1 SYNOPSIS
B<users> [ -h ]
=head1 DESCRIPTION
B<users> lists the login names of the users currently on the system in
+ a compact, one-line format.
=head2 OPTIONS
The following options are supported:
=over 4
=item -h
Display syntax.
=back
=head1 EXAMPLE
Below is an example of the B<users> output:
C:\> users
shoehorn Administrator
=head1 ENVIRONMENT
The working of B<users> is not influenced by any environment variables
+.
=head1 BUGS
B<users> isn't as nice as I would like, but Win32 isn't Unix, now is i
+t?
I did not bother to work on the formatting of the output beyond a tab
+between users.
=head1 STANDARDS
It does not make sense to talk about standards in a B<users> manual pa
+ge.
=head1 REVISION HISTORY
users
Revision 1.0 2000/06/22 10:32:57 idnopheq
Initial revision
=head1 AUTHOR
The Perl implementation of B<users> was written by Dexter Coffin, I<id
+nopheq@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
Just as a question: The code you provide works perfectly, however is there any way to return only a single user from the list being returned? I have an issue that I keep getting service accounts listed, while I am concerned only with the last one, which is normally a user account. Any help would be appreciated.