#!%PerlProg% # # studage - mark killed entries with free student accounts as gone # # Copyright (c) 1995 University of Illinois Board of Trustees and Paul Pomes # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: # This product includes software developed by the Corporation for # Research and Educational Networking (CREN), the University of # Illinois at Urbana, and their contributors. # 4. Neither the name of CREN, the University nor the names of their # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE TRUSTEES AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE TRUSTEES OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # @(#)$Id: allage,v 1.2 1995/01/11 00:05:11 p-pomes Exp p-pomes $ $deleteMonths = 10; # really delete people this old $fieldName = "left_uiuc"; # name of field to use $fieldAcct = "CCSO-accounts"; # accounting field to scan # an array of hosts would be expensive so they are hard-coded below if ($#ARGV<2 || $#ARGV>3) { print STDERR "Usage: studage prod.cnf sf.kill [sf.kill.dead]\n"; exit 1; } ($config,$stiffFile,$killFile) = @ARGV; # # let's find out any bad news right away # open(CONFIG,"<$config") || die "$config: $!\n"; open(STIFFFILE,"<$stiffFile") || die "$stiffFile: $!\n"; if ($killFile ne "") {open(KILLFILE,">$killFile") || die "$killFile: $!\n";} # # find the number of the left field $lnum = $anum = -1; while () { if (/:$fieldName:/) {($lnum)=(split(':'))[0];} elsif (/:$fieldAcct:/) {($anum)=(split(':'))[0];} } if ($lnum<0) {die "Couldn't find $fieldName in $config.\n";} if ($anum<0) {die "Couldn't find $fieldAcct in $config.\n";} # # figure out today's number ($month,$year) = (split(' ',`date`))[1,5]; $m = 0; foreach $monthName ("Jan","Feb","Mar","Apr","May","Jun", "Jul","Aug","Sep","Oct","Nov","Dec") { if ($month eq $monthName) {$month=$m;last;} $m++; } $now = $year*12+$month; $month++; while () { chop; if (/\t$lnum:/) { $tmp = $_; $tmp =~ s/.*\t$lnum://; $tmp =~ s/\t.*//; ($m,$y) = split('/',$tmp); if ($y*12+$m-1 < $now-$deleteMonths) { if ($killFile ne "") {print KILLFILE "$_\n";} } else { print "$_\n"; } } else { $acct = $line = $_; $acct =~ s/.*\t$anum:([^\t\n]*).*/$1/; if ($acct =~ /@(ux4|ux5)/o) { print "$line\t$lnum:$month/$year\n"; } else { print "$line\n"; } } }