Someone called ilug-admin at linux.ie said on Tue, May 02, 2000 at 03:06:59PM +0100:
> Tina Marie's [TinaDp6 at netscape.net] 22 lines of dribble included:
> >
> >
> > I need to have the number of users printed out within my perl script.
> >
> > I know the UNIX command is w -h | wc -l
> That doesn't work if users are logged in multiple times.
> w | awk '{print $1}' | sort | uniq | wc -l
> (sort -u saves a pipe on some systems)
>> > But how do I get it to print out like the sample below?
> >
> >
> > There are 7 users logged on the system.
> This sounds more of a shell scripty way of doing things than actually needing
> to do it in perl. However if what you're looking for is something like
>> #!/usr/bin/perl
> $blah = system("w | awk '{print $1}' | sort | uniq | wc -l");
> print "There are $blah users logged on";
>That'd ouput the return value from that nasty shell command, which you don't
really want. A slightly more efficient (resourcewise, anyway) would be
something like:
sub num_users
{
open(USERS,"/usr/bin/users|");
my $users = <USERS>;
close USERS;
my @userlist = split(/\s+/,$users);
my @uniqlist;
foreach (@userlist)
{
if (!grep($_, at uniqlist))
{
push(@uniqlist,$_);
}
}
return scalar @uniqlist;
}
- DoC, the bored.
Maintained by the ILUG website team. The aim of Linux.ie is to
support and help commercial and private users of Linux in Ireland. You can
display ILUG news in your own webpages, read backend
information to find out how. Networking services kindly provided by HEAnet, server kindly donated by
Dell. Linux is a trademark of Linus Torvalds,
used with permission. No penguins were harmed in the production or maintenance
of this highly praised website. Looking for the
Indian Linux Users' Group? Try here. If you've read all this and aren't a lawyer: you should be!