#!/bin/bash

cnt=0;
max_dev=0;
max_io=0;
max_vendor=0;
max_model=0;

for f in `ls /sys/block/`
do
#   printf "===== ${f} =====\n"
     dev[${cnt}]="${f}";
     len=${#dev[$cnt]};

     if [ ${len} -gt ${max_dev} ]
     then
        max_dev=${len};
     fi

     if [ -e /sys/block/${f}/queue/scheduler ]
     then
         io[${cnt}]="`cat /sys/block/${f}/queue/scheduler | sed -e 's/^  *//g' -e 's/  *$//g'`";
     else
         io[${cnt}]="n/a";
     fi

     if [ ${#io[$cnt]} -gt ${max_io} ]
     then
        max_io=${#io[$cnt]};
     fi

     if [ -e /sys/block/${f}/device/vendor ]
     then
         vendor[${cnt}]="`cat /sys/block/${f}/device/vendor | sed -e 's/^  *//g' -e 's/  *$//g'`";
     elif [ -e /proc/ide/${f}/model ]
     then
         vendor[${cnt}]="`cat /proc/ide/${f}/model| awk '{print $1}'`";
     else
         vendor[${cnt}]="unknown";
     fi

     if [ ${#vendor[$cnt]} -gt ${max_vendor} ]
     then
        max_vendor=${#vendor[$cnt]};
     fi

     if [ -e /sys/block/${f}/device/model ]
     then
         model[${cnt}]="`cat /sys/block/${f}/device/model | sed -e 's/^  *//g' -e 's/  *$//g'`";
     elif [ -e /proc/ide/${f}/model ]
     then
         model[${cnt}]="`cat /proc/ide/${f}/model| awk '{print $2}'`";
     else
         model[${cnt}]="unknown";
     fi

     if [ ${#model[$cnt]} -gt ${max_model} ]
     then
        max_model=${#model[$cnt]};
     fi

     cnt=$((cnt + 1));
#   printf "cnt == <<%d>>\n" ${cnt}
done

for (( index=0; ${index} < ${cnt}; index++ ))
do
     printf "===== %*s %*s %*s %*s =====\n" ${max_dev} "${dev[${index}]}" ${max_vendor} "${vendor[${index}]}" ${max_model} "${model[${index}]}" ${max_io} "${io[${index}]}"
done
