#!/usr/local/bin/perl # # Listgroup command. # # $Id: listgroup,v 1.8 2003-01-21 12:23:53-05 mprewitt Exp $ # # ----- =head1 NAME B - Lists hosts/users in a netgroup group. =head1 SYNOPSIS listgroup listgroup [--host] groupname1 [ [-]groupname2 [-]groupname3 ... ] listgroup [--user] groupname1 [ [-]groupname2 [-]groupname3 ... ] =head1 DESCRIPTION Lists groups or members of a netgroup NIS map. B without any parameters lists all the available netgroup groups. With groupname parameters, B will recusively list the members of the named groups. Each member in a group is a triplet of (host,user,domain). The host portion or user portion of the members is returned depending upon whether B<--host> or B<--user> is used. If neither B<--host> or B<--user> is used, listgroup will return the host portion. If a {groupname} is preceded with a B<->, members of that group will be excluded from the output. Groups are processed in the order they appear on the command line. =head1 OPTIONS =over 4 =item B<--host> Restrict output to only contain the host portion of the members in the groupname. =item B<--user> Restrict output to only contain the user portion of the members in the groupname. =back =head1 REQUIRES Perl Modules: Net::NIS::Listgroup Net::NIS =head1 SEE ALSO L, L, L =head1 AUTHOR Original unknown Major rewrite by Marc Prewitt Copyright (C) 2003 Chelsea Networks, under the GNU GPL. listgroup comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions; see the COPYING file for details. listgroup is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. listgroup is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA =cut BEGIN { # for testing the library unshift @INC, '.'; } use Net::NIS::Listgroup; use strict; use vars qw(%ENV); use Getopt::Long; $ENV{'PATH'} = "/bin:/usr/bin/:/usr/local/bin:."; $ENV{'SHELL'} = "/bin/ksh"; $ENV{'IFS'} = undef; $ENV{'ENV'} = "/usr/local/lib/env"; my $opt_host; my $opt_user; my $group; if (@ARGV) { while (index($ARGV[0], '-') == 0) { if ($ARGV[0] =~ /-?-u(ser)?/ ) { $opt_user = 1; shift @ARGV; } elsif ($ARGV[0] =~ /-?-h(ost)?/) { $opt_host = 1; shift @ARGV; } elsif ($ARGV[0] =~ /-?-\?/) { exit Usage(); } else { print STDERR "Unknown option: $ARGV[0]\n"; exit Usage(); } } if ($opt_host && $opt_user) { print STDERR "Only one of --user or --host allowed\n"; exit Usage(); } elsif ( $opt_user ) { $group = Net::NIS::Listgroup::listgroup_user(@ARGV); } else { $group = Net::NIS::Listgroup::listgroup_host(@ARGV); } } else { $group = Net::NIS::Listgroup::listgroups(); } exit unless $group; print join (" ", @{$group}), "\n"; sub Usage { print STDERR qq{ Usage: listgroup listgroup [--host] groupname1 [ [-]groupname2 [-]groupname3 ... ] listgroup [--user] groupname1 [ [-]groupname2 [-]groupname3 ... ] }; return 1; }