home *** CD-ROM | disk | FTP | other *** search
- #!/bin/bash
- #
- # Copyright (c) 1999 S.u.S.E. Gmbh Fuerth, Germany. All rights reserved.
- #
- # Author: Thomas Fehr <fehr@suse.de>, 1999
- #
- TMPDIR=/tmp/`basename $0`.$$
- mkdir -p $TMPDIR
- cd $TMPDIR
- fdisk -l | sed "s/[*+-]//g" | egrep "Disk|^/dev" | grep -v Extended |\
- csplit -z - "/^Disk/" "{*}" > /dev/null
- df -P | sort | awk '{ printf "%s %s free=%d\n", $1, $6, int($4/1024) }' > size
- for i in xx??
- do
- SEC_CYL=`head -1 $i | awk '{ print $3, "*", $5 }' | bc`
- DISK=`head -1 $i | awk '{ print $2 }' | sed s/://`
- DISK_LEN=`echo -n $DISK | wc -c`
- cat size | grep ^$DISK | sort -n -k1.`expr $DISK_LEN + 1` > size.1
- cat $i | sed 1d |\
- awk "{ printf \"%s size=%d id=%s\n\", \$1, \
- int((((\$3-\$2+1)*$SEC_CYL+1)/2+1023)/1024), \$5 }" > info
- rm -f info.1
- for i in `awk '{ if ( $3=="id=83" ) print $1 }' < info`
- do
- echo -n "$i " >> info.1
- dumpe2fs $i 2>/dev/null | head -30 |\
- awk 'BEGIN {maxm=-1; rb=-1}
- /Errors behavior:/ { err=$3 }
- /Block size:/ { bs=$3 }
- /Maximum mount count:/ { maxm=$4 }
- /Inode count:/ { ic=$3 }
- /Block count:/ { bc=$3 }
- /Reserved block count:/ { rb=$4 }
- END { if (bs!=0) printf( "bs=%d", bs );
- if (length(err)>0)
- printf( " err=%s", tolower(substr(err,0,1)));
- if (maxm!=-1) printf( " maxm=%d", maxm );
- if (bs!=0&&ic!=0)
- printf( " idns=%d",
- 2^int(log(bc/ic)/log(2)+0.5)*bs );
- if (bc!=0&&rb!=-1) {
- diff = int(100/bc*rb+0.1) - 100/bc*rb
- if (diff<0)
- diff=-diff;
- if( diff <= 0.1 )
- printf( " respc=%d", int(100/bc*rb+0.1) );
- else
- printf( " resbl=%d", rb ); \
- }
- printf( "\n" );
- }' >> info.1
- done
- cat info | join -a 1 - info.1 |\
- join -a 2 size.1 - | sed s:$DISK:num=: |\
- awk '{ if(substr($2,0,1)!="/") $2="NONE " $2 ;
- if(substr($3,0,5)=="free=") { $(NF+1)=$3 ; $3="" } ;
- print $0 }' | sed "s/ / /g" | sort -n -k 1.5 |\
- awk '{ if( $2=="NONE" && $4=="id=82" ) $2="SWAP" ;
- tmp=$2 ; $2=$1; $1=tmp ; print $0 }' > $i.1
- MAX=`awk '{ print $3 }' $i.1 | sort -nr -k 1.6 | head -1`
- sed "s/ $MAX / size=0 /" $i.1 > part`echo $DISK | sed "s:/:.:g"`
- done
- cd -
- mv $TMPDIR/part.* .
- rm -rf $TMPDIR
-