#!/bin/bash # diskinfo 1.10 2008-04-29 13:58:39-04 davidsen Testing # # display disk info # option parsing verbose=0 partitions=false debug=false while getopts "pvd" opt; do case "$opt" in "p") partitions=true;; "v") let verbose+=1;; "d") debug=true;; "?") exit 2;; esac done if [ $verbose -gt 0 ]; then echo -e 'diskinfo v1.10 Testing 2008-04-29 13:58:39-04 davidsen@tmr.com\n' >&2 fi Gig_sect=$[2*1024*1024] # this does the output function do_blkdev { local drive id modelfile id="$1" drive=$2 # size in MB or GB as makes sense size=$(cat ${drive}/size) if [ $size -lt $Gig_sect ]; then MB=$(echo "scale=1;$size/2048"|bc) UNIT="MB" else MB=$(echo "scale=1;$size/(2*1024^2)"|bc) UNIT="GB" fi modelfile="${drive}/device/model" if [ -f "$modelfile" ]; then model=$(cat "${modelfile}") else if [ -d ${drive}/holders ]; then model=$(ls ${drive}/holders) [ -n "$model" ] && model=" ($(echo $model))" else model="undefined" fi fi printf "%-8s %6s %-2s %s\n" "$id" $MB $UNIT "$model" } # identify devices eval DISKS=\${${OPTIND}:-hd? sd?} # process the block devices cd /sys/block for disk in ${DISKS} do if [ -d "${disk}" ]; then do_blkdev "$disk" "$disk" if $partitions; then for ptn in ${disk}/${disk}[1-9]*; do if [ -d "$ptn" ]; then do_blkdev " ${ptn##*/}" $ptn else echo " no partition table" fi done fi fi done