123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- #!/bin/sh
- . /etc/rc.d/PUPSTATE
- SUNITS="$1"
- OUTPUT=""
- if [ -f /root/.usb-drive-log-probepart ];then
- for ONEUSBDRV in `cat /root/.usb-drive-log-probepart | tr '\n' ' '`
- do
-
- dd if=/dev/$ONEUSBDRV of=/dev/null bs=512 count=1 >/dev/null 2>&1
- done
- fi
- PARTITIONS="`grep '^ .*[^kr][0-9]$' /proc/partitions | tr -s ' ' | cut -f 4-5 -d ' ' | grep -vE ' loop| ram'`"
- PARTNAMES="`echo "$PARTITIONS" | cut -f 2 -d ' '`"
- ALLDRVS="`ls -1 /sys/block | grep -E '^scd|^sd|^mmc|^sr'`"
- [ -e /proc/ide ] && ALLDRVS="${ALLDRVS}
- `ls -1 /proc/ide | grep '^hd'`"
- COREUTILSVER="$(sort --version | head -n 1 | rev | cut -f 1 -d ' ' | rev)"
- if vercmp $COREUTILSVER le 6.12;then
- ALLDEVS="`echo "${PARTNAMES}
- ${ALLDRVS}" | tr '\n' ' '`"
- else
- ALLDEVS="`echo "${PARTNAMES}
- ${ALLDRVS}" | sort -V -u | tr '\n' ' '`"
- fi
- EXTD=''
- printf "$ALLDRVS"|while read DISK
- do
- FDISK="`fdisk -l /dev/"$DISK"`"
- EXTD="`echo "$FDISK"|grep -w 'Extended'|grep "$DISK"|awk '{print $1}'`"
- EXTD=${EXTD##*/}
- [ "$EXTD" ] && echo -n "$EXTD " >> /tmp/extended_parts
- done
- [ -f /tmp/extended_parts ] && EXTD="`cat /tmp/extended_parts`"
- rm /tmp/extended_parts 2>/dev/null
- for ONEDEV in $ALLDEVS
- do
- MEDIATYPE=""
- FSTYPE="unknown"
- DPATTERN=' '${ONEDEV}'$'
- SIZE=`echo "$PARTITIONS" | grep "$DPATTERN" | cut -f 1 -d ' '`
- DEVICE="`echo "$PARTITIONS" | grep "$DPATTERN" | cut -f 2 -d ' '`"
- if [ ! $SIZE ];then
- [ "`echo "$PARTITIONS" | grep "$ONEDEV"`" != "" ] && continue
-
- SIZE=0
- DEVICE="$ONEDEV"
- case $DEVICE in
- hd*)
- [ "`cat /proc/ide/$DEVICE/media`" = "cdrom" ] && MEDIATYPE="optical"
- ;;
- scd*|sr*)
- MEDIATYPE="optical"
- ;;
- esac
- if [ -e /sys/block/${DEVICE}/size ];then
- SIZE=`cat /sys/block/${DEVICE}/size`
- SIZE=$(($SIZE/2))
- fi
-
- if [ "$MEDIATYPE" = "" -a $SIZE -eq 0 ];then
- BSIZE=`disktype /dev/$DEVICE 2>/dev/null | grep '^Block device' | cut -f 2 -d '(' | cut -f 1 -d ' '`
- [ $BSIZE ] && SIZE=$(($BSIZE/1024))
- fi
- if [ "$MEDIATYPE" = "optical" ];then
- opticalPATTERN='^/dev/'"$DEVICE"
- if [ "`grep "$opticalPATTERN" /proc/mounts`" = "" ];then
- cddetect_quick -d/dev/${DEVICE} >/dev/null 2>&1
-
- [ $? -ne 0 ] && continue
- fi
- fi
- fi
- FSTYPE="`guess_fstype /dev/$DEVICE 2>/dev/null`"
- echo "$EXTD"|grep -q "$DEVICE" && FSTYPE='unknown'
- if [ "$FSTYPE" = "unknown" -a "$MEDIATYPE" = "optical" ];then
- cddetect -q -d/dev/${DEVICE} > /dev/null 2>&1
- case $? in
- 1) FSTYPE="audiocd" ;;
- esac
- fi
-
-
-
- xFSTYPE=''
- if [ "$FSTYPE" = "unknown" -a "$MEDIATYPE" = "" ];then
- fsPATTERN='^/dev/'"$DEVICE"' '
- xDEVICE="`echo -n "$DEVICE" | sed -e 's/[0-9]*$//' -e 's%p$%%'`"
- xFSTYPE="`fdisk -l /dev/$xDEVICE 2>/dev/null | grep "$fsPATTERN" | head -n 1 | grep -o -E 'FAT|swap|Linux|NTFS'`"
- case $xFSTYPE in
- FAT) FSTYPE='vfat' ;;
- swap) FSTYPE='swap' ;;
- NTFS) FSTYPE='ntfs' ;;
- Linux)
- FSTYPE=$(blkid -c /dev/null /dev/${DEVICE} | grep -w "${DEVICE}" | grep -o ' TYPE=".*"' | cut -f2 -d'"')
- [ "$FSTYPE" = "" ] && FSTYPE="unknown"
- ;;
- esac
- fi
-
- [ "$FSTYPE" = "unknown" ] && FSTYPE="none"
- [ "$SUNITS" = "" ] && SIZE=$(($SIZE*2))
- [ "$SUNITS" = '-m' ] && SIZE=$(($SIZE/1024))
- echo "/dev/$DEVICE|$FSTYPE|$SIZE"
-
-
- case $DEVICE in
- sd*)
-
- DEVDRV="`echo -n "$DEVICE" | tr -d '[0-9]'`"
- if [ "`echo "$ATADRIVES" | grep "$DEVDRV"`" = "" ];then
- echo "$DEVDRV" >> /root/.usb-drive-log-probepart
- sort -u /root/.usb-drive-log-probepart > /tmp/usb-drive-log-probepart-tmp
- mv -f /tmp/usb-drive-log-probepart-tmp /root/.usb-drive-log-probepart
- fi
- ;;
- esac
-
- done
|