script:/opt/glite/sbin/glite-urcollector.pl
From Dgiref
## ------ 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; }