awk scripts problem after upgrade from RHEL-2.1 to RHEL-4

Ben Russo ben at muppethouse.com
Fri May 12 19:12:11 UTC 2006


We had two almost identical servers running RHEL-2.1
One of them we upgraded to RHEL-3, then to RHEL-4 (in a two stroke process).

		 up2date -u
	boot from rhel-3 cd#1,
		boot: linux upgrade
	default options all the way
	reboot
		up2date -u
	boot from rhel-4 cd#1
		boot: linux upgrade
	default options all the way
	reboot
		up2date -u

Now the second server (which was working fine yesterday) is RHEL-4
and old legacy accounting scripts don't work.

A regular user on the system has a script called "idxlist"
it is:

	[ -z "$LOCAL" ] && LOCAL=/u/apps/utilities
	awk -f$LOCAL/idxlist.awk -v date=$1 -v ext=$2 $LOCAL/idxpath

idxlist.awk's contents look like this:

BEGIN           {
                 dash=index(date,"-")
                 plus=index(date,"+")
                 if (dash!=0)
                         {
                         range=1
                         beg=substr(date,1,dash-1)
                         end=substr(date,dash+1)
                         if (length(end)<6)
                                 end=substr(beg,1,6-length(end)) end
                         }
                 else if (plus!=0)
                         {
                         sequence=1
                         beg=substr(date,1,plus-1)
                         count=substr(date,plus+1)+0
                         }
                 else    {
                         singular=1
                         }
                 if(ext!="")
                         ext="." ext
                 }
/^\*/           {next}
singular && substr(date,1,4)==$1        {
                 look=1
#               NF=0
                 "ls " $2 "arc" date "*" | getline
                 if (NF==0)
                         print 0
                 else print substr($1,1,length($1)-4) ext
                 next
                 }
sequence==1     {
                 while("ls " $2 | getline file)
                         {
                         look=1
                         arc=(substr(file,1,3)=="arc")
                         nam=index(file,"arc")
                         #dat=substr(file,nam+3,6)+0
                         dat=substr(file,nam+3,6)
                         if (dat==beg&&start==0)
                                 start=1
                         if (arc && start && start<=count)
                                 {
                                 if (found[dat]==0)
                                         {
                                         print $2 
substr(file,1,length(file)-4) ext
                                         start++
                                         }
                                 found[dat]=1
                                 }
                         }
                 next
                 }
range==1        {
                 while("ls " $2 | getline file)
                         {
                         look=1
                         nam=index(file,"arc")
                         #dat=substr(file,nam+3,6)+0
                         dat=substr(file,nam+3,6)
                         if (dat>=beg && dat<=end)
                                 {
                                 if (found[dat]==0)
                                         print $2 
substr(file,1,length(file)-4) ext
                                 found[dat]=1
                                 }
                         }
                 }
END     {
         if (look==0)
                 print 0
         }

######  END OF IDXLIST.AWK

That would seem pretty simple.
The script just takes a date in the form of   060512    or 060507+5  or 
060512-11

and it would give you a list of files in the directories that are listed 
in /u/apps/utilities/idxpath that contain the date string in the range 
given.

It works fine on server 1 (RHEL-2.1)  but not on the upgraded server 
(RHEL-4)

any ideas?

-Ben.




More information about the redhat-list mailing list