#!/bin/ksh # Marc Landrier # V2.0 20/01/2000 # Analyse du partitionnement des disques # option(s): -b pour brief visu simplifie ME=`basename $0` OPTS="$1" export PATH=$PATH:/usr/opt/SUNWmd/sbin UNIQUE=$$$RAMDOM$RANDOM #SWAP swap -l | grep -v swapfile | awk '{ print $1 }' > /tmp/$ME.swap.$UNIQUE #VOL MANAGER [ -f /usr/sbin/vxdisk ] && { vxdisk list > /tmp/$ME.vxdisk.$UNIQUE 2>/dev/null } #SDS > /tmp/$ME.metastat.$UNIQUE [ -f /usr/opt/SUNWmd/sbin/metastat ] && { metastat -p | sed ':join /\\$/{N s/\\\n// b join } ' > /tmp/$ME.metastat.$UNIQUE metadb 2>/dev/null | grep "\/dev\/dsk" | awk '{ print "metadb "$NF }' | sort -u >> /tmp/$ME.metastat.$UNIQUE } for disk in $(echo quit | format 2>/dev/null | grep cyl | awk '{ print $2 }') do echo "\n\n* Disque : $disk\n* " if [ a$OPTS != "a-b" ] then echo "* Slice Tag Flgs Start Size_Sec End Type Size Mo" else echo "* Type Size Mo" fi LAST="0" CURSEUR="0" { prtvtoc /dev/rdsk/${disk}s2 | grep -v "^*" | sort -bn -k 4,4 -k 6,6r | while read ligne do # tableau: * Partition Tag Flags First_Sector Count Last_Sector Mount_Directory typeset -R partition set -A partition $ligne KESAKO="raw_INCONNU________" if [ ${partition[0]} -eq 2 ] then LAST=${partition[5]} echo ${partition[*]} TOTAL_DISK else if [ $CURSEUR -eq ${partition[3]} ] then (( CURSEUR = ${partition[5]} +1 )) else (( size = ${partition[3]} - $CURSEUR )) ; (( end = ${partition[3]} -1 )) if (( $size >= 0 )) then echo '*** * ** '"$CURSEUR $size $end" "Total_Libre________" (( CURSEUR = ${partition[5]} + 1 )) fi fi if [ "a${partition[6]}" = a ] then grep "${disk}s${partition[0]}" /tmp/$ME.swap.$UNIQUE > /dev/null 2>&1 if [ $? -eq 0 ] then KESAKO="SWAP" else [ -f /usr/sbin/vxdisk ] && { vxdisk list ${disk}s2 2>/dev/null | grep paths | awk -F/ '{ print $NF }' | grep ${disk}s${partition[0]} > /dev/null 2>&1 && { KESAKO=`grep ${disk}s2 /tmp/$ME.vxdisk.$UNIQUE | awk '{ printf("VM_%s#%s",$4,$3) }'` } } if [ $KESAKO = "raw_INCONNU________" ] then mddisk=`grep "${disk}s${partition[0]}" /tmp/$ME.metastat.$UNIQUE` if [ "a$mddisk" != "a" ] then KESAKO="SDS_$mddisk" else FSTYP=$(fstyp /dev/rdsk/${disk}s${partition[0]} 2>/dev/null) if [ $? = 0 ] then KESAKO="${FSTYP}_INCONNU" else owner=`ls -Lla /dev/rdsk/${disk}s${partition[0]} | awk '{ print $3 }'` [ $owner != "root" ] && KESAKO="raw_$owner?" fi fi fi fi fi echo ${partition[*]} $KESAKO fi done [ "${partition[5]}" != "$LAST" ] && { (( size = $LAST - ${partition[5]} )) ; (( start = ${partition[5]} +1 )) echo '*** * ** '"$start $size $LAST" "Total_Libre________" } ; } | if [ a$OPTS != "a-b" ] then awk ' { printf("%3s %8s %5s %10s %10s %10s %-20s %8.2f Mo\n",$1,$2,$3,$4,$5,$6,$7,($5 / 2 / 1024 )); }' else awk ' { printf(" %-20s %8.2f Mo\n",$7,($5 / 2 / 1024 )); }' fi done rm -f /tmp/$ME.*.$UNIQUE