Add identify_drive.sh
This commit is contained in:
commit
26ce1b7e04
1 changed files with 119 additions and 0 deletions
119
identify_drive.sh
Normal file
119
identify_drive.sh
Normal file
|
@ -0,0 +1,119 @@
|
|||
#!/bin/bash
|
||||
|
||||
export OMIT=0
|
||||
|
||||
[ ${DEBUG:=0} -gt 0 ] && set -x -v
|
||||
|
||||
declare -a DRIVES MODELS CHOICE
|
||||
typeset -x DRIVES MODELS CHOICE CMDS
|
||||
|
||||
TMPFILE="/tmp/identify_drive.$$"
|
||||
|
||||
trap "rm -f ${TMPFILE}" EXIT HUP INT QUIT TERM
|
||||
|
||||
CMDS="quit"
|
||||
|
||||
# --------------------------------------------------------------------- #
|
||||
# Function : LOAD_DRIVES #
|
||||
# Description : Reads directory with ls parses and stores into array. #
|
||||
# used later to retreive drive for printing details #
|
||||
# Parameters : Nothing #
|
||||
# Returns : Nothing #
|
||||
# Environment : DRIVES array, MODELS array #
|
||||
# --------------------------------------------------------------------- #
|
||||
load_drives()
|
||||
{
|
||||
ls -l /dev/disk/by-id/ | egrep 'ata\-' > ${TMPFILE}
|
||||
|
||||
# rwxrwxrwx 1 root root 9 Apr 20 08:04 ata-Hitachi_HTS722020K9SA00_071007DP0400DTG101HA -> ../../sdf
|
||||
# lrwxrwxrwx 1 root root 10 Apr 20 08:04 ata-Hitachi_HTS722020K9SA00_071007DP0400DTG101HA-part1 -> ../../sdf1
|
||||
# I know it's inefficient.
|
||||
# but piping mount into loop creates a subprocess
|
||||
# whereby the export inside the loop never gets
|
||||
# back to the parent.
|
||||
|
||||
i=0
|
||||
while read PERMS LINKS OWNER GROUP XX MONTH DD HHMM MODEL LINKER DEV
|
||||
do
|
||||
# ${parameter:offset:length}
|
||||
NAME=${DEV:6:4} # Save Whole Drive
|
||||
DEV=${DEV:6:3} # Remove Partition #
|
||||
if [ ${DEV} != ${NAME} ]; then continue; fi
|
||||
for OMODEL in ${OMIT_MODELS[*]}
|
||||
do length=${#OMODEL}
|
||||
if [ ${MODEL:0:$length} = ${OMODEL} ];then OMIT=1;fi
|
||||
done
|
||||
if [ ${OMIT:=0} -gt 0 ]
|
||||
then OMIT=0
|
||||
continue
|
||||
fi
|
||||
DRIVES[$i]="/dev/${DEV}"
|
||||
MODELS[$i]="${MODEL}"
|
||||
CHOICE[$i]="/dev/${DEV} ${MODEL}"
|
||||
((i++))
|
||||
done < ${TMPFILE}
|
||||
|
||||
rm -f ${TMPFILE}
|
||||
|
||||
}
|
||||
|
||||
|
||||
present_drives()
|
||||
{
|
||||
PS3="identify> "
|
||||
select DRIVE in "${CHOICE[@]}" ${CMDS}
|
||||
do
|
||||
echo "DRIVE: $DRIVE, REPLY: ${REPLY}"
|
||||
if [ -z "${DRIVE}" -a ! -z "${REPLY}" ]
|
||||
then DRIVE="${REPLY}"
|
||||
fi
|
||||
if [ -z "${DRIVE}" ]
|
||||
then return
|
||||
fi
|
||||
case "${DRIVE}" in
|
||||
q*|Q* ) exit;;
|
||||
e*|e* ) exit;;
|
||||
* ) set ${DRIVE}; identify $@; return;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
|
||||
identify()
|
||||
{
|
||||
|
||||
ID=$1
|
||||
[ ! -z "${2}" ] && ID="$ID ($2)"
|
||||
|
||||
echo -e "Reading ${ID}"
|
||||
while ! read -n1 -t1
|
||||
do
|
||||
echo -e "\r\007press ANY key to stop: [+]: \c"
|
||||
dd if=$1 of=/dev/null bs=1025K count=10 skip=${SKIP} 2>/dev/null
|
||||
read -n1 -t1 && break
|
||||
((SKIP=SKIP+1000))
|
||||
|
||||
echo -e "\r\007press ANY key to stop: [x]: \c"
|
||||
dd if=$1 of=/dev/null bs=1025K count=10 skip=${SKIP} 2>/dev/null
|
||||
read -n1 -t1 && break
|
||||
((SKIP=SKIP+1000))
|
||||
|
||||
echo -e "\r\007press ANY key to stop: [-]: \c"
|
||||
dd if=$1 of=/dev/null bs=1025K count=100 skip=${SKIP} 2>/dev/null
|
||||
# sleep 1
|
||||
((SKIP=SKIP+10000))
|
||||
done
|
||||
echo -e "\nDone."
|
||||
}
|
||||
|
||||
|
||||
if [ ! -z "${1}" ]
|
||||
then identify $1
|
||||
exit
|
||||
fi
|
||||
|
||||
while true
|
||||
do load_drives
|
||||
present_drives
|
||||
done
|
Loading…
Reference in a new issue