#!/usr/bin/perl -T -I/h/COE/lib -U
#- The -U flag is to force /usr/bin/groups
#- The -w flag is dropped to mask the warnings from -U
use strict;
use Coe;
my $VERSION="1.1.4.1";
if (@ARGV == 0) {
print "Usage: COE_get_group_data {-n groupname}|{-g gid}|{-u user}\n";
exit;
}
my $groupid="dummy";
my $groupname="dummy";
my $groups;
my $username="dummy";
my $uscope="local";
my $arg1;
my $i;
my $osdat;
my $OSDAT;
my @gid;
my @groups;
while (@ARGV > 0 ){
$arg1=cleanString(shift,1);
if ("$arg1" eq "-h") {
print "HELP\n";
exit;
} elsif ("$arg1" eq "-H") {
print "HELP\n";
exit;
} elsif ("$arg1" eq "--help") {
print "HELP\n";
exit;
} elsif ("$arg1" eq "-V") {
print "VERSION: $VERSION\n";
exit;
} elsif ("$arg1" eq "--version") {
print "VERSION: $VERSION\n";
exit;
} elsif ("$arg1" eq "-n") {
$groupname=cleanString(shift,3);
} elsif ("$arg1" eq "-g") {
$groupid=cleanString(shift,1);
} elsif ("$arg1" eq "-u") {
$username=cleanString(shift,3);
} else {
print "HELP\n";
exit;
}
}
# get the GIDS
$i=0;
$osdat="/etc/group";
if ("$groupname" ne "dummy") {
$OSDAT=readFile($osdat);
while (<$OSDAT>) { if (/^$groupname:/) { $gid[$i++]=$_; }}
close $OSDAT;
} elsif ("$groupid" ne "dummy") {
$OSDAT=readFile($osdat);
while (<$OSDAT>) { if (/.*:.*:$groupid:/) { $gid[$i++]=$_; }}
close $OSDAT;
} elsif ("$username" ne "dummy") {
$_=coeExec "/usr/bin/groups $username";
# output is -> username : g1 g2 g3
@groups=split(":");
$_=$groups[1];
@groups=split();
foreach (@groups) {
#print "$_\n";
$groupname=cleanString($_);
$OSDAT=readFile($osdat);
while (<$OSDAT>) { if (/^$groupname:/) { $gid[$i++]=$_; }}
close $OSDAT;
}
}
foreach (@gid) {
print "$_";
}