script:/opt/glite/sbin/glite-urcollector.pl

From Dgiref
Jump to: navigation, search
## ------ write file in gianduiottiBox per pushd ---------- ##
sub writeGianduiottoFile {
my $filename = $lrmsType."_".$_[0]."_".$_[1];
# unique filename: <lrmsType>_<lrmsJobID>_<lrmsEventTimestamp>
my $header = $_[2];
my $acctlog = $_[3];
### JAN ab hier
my $gridmapfile="/etc/grid-security/grid-mapfile.dgas_special";
my $groupmapfile="/etc/grid-security/groupmapfile.dgas";
my $trash ="";
my $localuser = "";
my $localgroup = "";
my $user = "";
my $group = "";
my $DN = "";
my $vo = "";
my $vokrzl = "";
my $acctline = "";
my $acctdata = "";
$acctline = $acctlog;
$acctline =~ s/\;/ /;
### JAN ab hier
#
# wir reiten ueber die accounting-saetze aus dem pbs und ersetzen <user> und <group>
# entsprechend der regeln:
#
# 1. praefix bei einem [aaaannnn]-format wird immer entfernt -> uhad0006 wird zu
ad0006
#
# 2. fuer den user wird ein DN im gridmapfile gesucht
#
# 2a. DN gefunden -> vo-name anhand vo-kuerzel des users ermitteln (groupmapfile)
# 2b. kein DN gefunden -> <user> ist 'localuser', <group> ist 'localgroup'
#
foreach $acctdata ( split /\s/, $acctline ) {
if ( $acctdata =~ m/user/ ) {
( $trash, $localuser ) = split /=/, $acctdata;
$user = $localuser;
# 1.
if ( $localuser =~ /\w\w\w\w\d\d\d\d/ ) {
$user =~ s/\w\w(\w+)/$1/;
}
# 2.
$DN = ( split /"/, `grep $user $gridmapfile` )[1];
# 2b.
if ( $DN eq "" ) {
$user = "localuser";
$group = "localgroup";
$DN = ( split /"/, `grep localuser $gridmapfile` )[1];
}
else # 2a.
{
$vokrzl = substr( $user, 0, 2 ) . " ";
$group = ( split / /, `grep "$vokrzl" $groupmapfile` )[1];
chomp $group;
}
}
if ( $acctdata =~ m/group/ ) {
( $trash, $localgroup ) = split /=/, $acctdata;
}
}
$acctlog =~ s/group=$localgroup/group=$group/;
if ( $user eq "localuser" ) {
$acctlog =~ s/user=$localuser/user=localuser/;
}
else {
$acctlog =~ s/user=$localuser/user=$user/;
}
### JAN bis hier
open(OUT, "> $gianduiottiBox/$filename") || return 1;
print OUT "$header";
### Jan ab hier
print OUT "USER_DN=$DN\n";
print OUT "USER_FQAN=/$group/Role=NULL/Capability=NULL\n";
### Jan bis hier
print OUT "ACCTLOG:$acctlog";
close (OUT);
return 0;
}
Personal tools