Created
July 31, 2017 04:28
-
-
Save jedimstr/af6052975fd5f57fd6dc6e1732477aeb to your computer and use it in GitHub Desktop.
Revisions
-
jedimstr created this gist
Jul 31, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -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