First sync.
This commit is contained in:
144
partvis
Executable file
144
partvis
Executable file
@@ -0,0 +1,144 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
sectors_to_size() {
|
||||
|
||||
SIZE=$(( ${1} * 512 ))
|
||||
MAG=0
|
||||
until [ $(awk "BEGIN { print ${SIZE} < 1000 }") -eq 1 ]; do
|
||||
SIZE=$(awk "BEGIN { print ${SIZE} / 1024 }" )
|
||||
((MAG++))
|
||||
done
|
||||
case ${MAG} in
|
||||
0) TAG="" ;;
|
||||
1) TAG="Ki" ;;
|
||||
2) TAG="Mi" ;;
|
||||
3) TAG="Gi" ;;
|
||||
4) TAG="Ti" ;;
|
||||
esac
|
||||
|
||||
printf "%.4g%s\n" "${SIZE}" "${TAG}B"
|
||||
}
|
||||
|
||||
[ $EUID -gt 0 ] && "Must run as superuser." && exit 1
|
||||
#[ ! -b "${1}" ] && "${1} is not a block device." && exit 2
|
||||
|
||||
#for DEVICE in $(fdisk -l | grep '^Disk /' | cut -d\ -f2 | cut -d: -f1); do
|
||||
for DEVICE in $(fdisk -l | grep '^Disk /' | grep -v '/dev/ram' | cut -d\ -f2 | cut -d: -f1); do
|
||||
|
||||
FDISKDATA="$(fdisk -l "${DEVICE}")"
|
||||
COLS="$(tput cols)"
|
||||
SECTORS="$(echo "${FDISKDATA}" | grep sectors | grep -v 'sectors of' | rev | cut -d\ -f2 | rev)"
|
||||
#PARTLIST="$(echo "${FDISKDATA}" | grep '^/' | sed 's/ */ /g' | cut -d\ -f1-3)"
|
||||
PARTLIST="$(echo "${FDISKDATA}" | grep '^/' | grep -v 'Extended$' | sed -e 's/*/ /' -e 's/ \+/ /g' | cut -d\ -f1-3)"
|
||||
|
||||
PARTITIONS=()
|
||||
SIZE_LOG=0
|
||||
PARTSECTS=()
|
||||
PARTSIZES=()
|
||||
SIZETOTAL=0
|
||||
PRINTCOLS=0
|
||||
PCOLS=()
|
||||
|
||||
if [ -z "${PARTLIST}" ]; then
|
||||
PARTITIONS=${DEVICE}
|
||||
SIZE_LOG=1
|
||||
PARTSECTS=${SECTORS}
|
||||
PARTSIZES=1
|
||||
SIZETOTAL=1
|
||||
else
|
||||
LASTEND=0
|
||||
while read -r PARTITION PARTSTART PARTEND; do
|
||||
if [ ${PARTSTART} -gt $(( ${LASTEND} + 2049 )) ]; then
|
||||
PARTITIONS+=( "Gap" )
|
||||
SIZE_LOG=( $(awk "BEGIN { print log( ${PARTSTART} - ${LASTEND} ) / log( ${SECTORS} ) }") )
|
||||
PARTSECTS+=( $(awk "BEGIN { print ${PARTSTART} - ${LASTEND} }") )
|
||||
PARTSIZES+=( ${SIZE_LOG} )
|
||||
SIZETOTAL=$(awk "BEGIN { print ${SIZETOTAL} + ${SIZE_LOG} }")
|
||||
fi
|
||||
PARTITIONS+=( ${PARTITION} )
|
||||
SIZE_LOG=( $(awk "BEGIN { print log( ${PARTEND} - ${PARTSTART} + 1 ) / log( ${SECTORS} ) }") )
|
||||
PARTSECTS+=( $(awk "BEGIN { print ${PARTEND} - ${PARTSTART} + 1 }") )
|
||||
PARTSIZES+=( ${SIZE_LOG} )
|
||||
SIZETOTAL=$(awk "BEGIN { print ${SIZETOTAL} + ${SIZE_LOG} }")
|
||||
LASTEND=${PARTEND}
|
||||
done <<< "${PARTLIST}"
|
||||
fi
|
||||
|
||||
FACTOR=$(awk "BEGIN { print ( ${COLS} - ${#PARTITIONS[@]} - 1 ) / ${SIZETOTAL} }")
|
||||
|
||||
for (( LCV = 0; LCV < ${#PARTITIONS[@]}; LCV++ )); do
|
||||
PRINTCOLS=$(( ${PRINTCOLS} + $(awk "BEGIN { print int ( ${PARTSIZES[${LCV}]} * ${FACTOR} + 0.5 ) }") ))
|
||||
PCOLS+=( $(awk "BEGIN { print int ( ${PARTSIZES[${LCV}]} * ${FACTOR} + 0.5 ) }") )
|
||||
done
|
||||
|
||||
OVERFLOW=$(( ${PRINTCOLS} + ${LCV} + 1 - ${COLS} ))
|
||||
|
||||
printf "%s" "┌"
|
||||
for (( LCV = 0; LCV < ${#PARTITIONS[@]}; LCV++ )); do
|
||||
[ ${LCV} = $(( ${#PARTITIONS[@]} - 1 )) ] && (( PCOLS[${LCV}]-=${OVERFLOW} ))
|
||||
printf '─%.0s' $(seq 1 ${PCOLS[${LCV}]})
|
||||
[ ${LCV} -lt $(( ${#PARTITIONS[@]} - 1 )) ] && echo -n "┬"
|
||||
done
|
||||
printf "%s\n" "┐"
|
||||
|
||||
printf "%s" "│"
|
||||
for (( LCV = 0; LCV < ${#PARTITIONS[@]}; LCV++ )); do
|
||||
OUTPUT=${PARTITIONS[${LCV}]##*/}
|
||||
PADL=( $(( ( ${PCOLS[${LCV}]} - ${#OUTPUT} ) / 2 )) )
|
||||
PADR=( $(( ${PCOLS[${LCV}]} - ${#OUTPUT} - ${PADL} )) )
|
||||
printf '%*s%s%*s' ${PADL} "" ${OUTPUT} ${PADR} ""
|
||||
[ ${LCV} -lt $(( ${#PARTITIONS[@]} - 1 )) ] && echo -n "│"
|
||||
done
|
||||
printf "%s\n" "│"
|
||||
|
||||
#echo -n "│"
|
||||
#for (( LCV = 0; LCV < ${#PARTITIONS[@]}; LCV++ )); do
|
||||
# OUTPUT=${PARTSECTS[${LCV}]}s
|
||||
# WIDTH=$(awk "BEGIN { print int ( ${PARTSIZES[${LCV}]} * ${FACTOR} + 0.5 ) }")
|
||||
# PADL=$(( ( ${WIDTH} - ${#OUTPUT} ) / 2 ))
|
||||
# PADR=$(( ${WIDTH} - ${#OUTPUT} - ${PADL} ))
|
||||
# echo -n "$(printf '%*s%s%*s' ${PADL} "" ${OUTPUT} ${PADR} "")"
|
||||
# [ ${LCV} -lt $(( ${#PARTITIONS[@]} - 1 )) ] && echo -n "│"
|
||||
#done
|
||||
#echo "│"
|
||||
|
||||
printf "%s" "│"
|
||||
for (( LCV = 0; LCV < ${#PARTITIONS[@]}; LCV++ )); do
|
||||
OUTPUT=$(sectors_to_size "${PARTSECTS[${LCV}]}")
|
||||
PADL=( $(( ( ${PCOLS[${LCV}]} - ${#OUTPUT} ) / 2 )) )
|
||||
PADR=( $(( ${PCOLS[${LCV}]} - ${#OUTPUT} - ${PADL} )) )
|
||||
printf '%*s%s%*s' ${PADL} "" ${OUTPUT} ${PADR} ""
|
||||
[ ${LCV} -lt $(( ${#PARTITIONS[@]} - 1 )) ] && echo -n "│"
|
||||
done
|
||||
printf "%s\n" "│"
|
||||
|
||||
printf "%s" "│"
|
||||
for (( LCV = 0; LCV < ${#PARTITIONS[@]}; LCV++ )); do
|
||||
#OUTPUT=$(blkid -o export "${PARTITIONS[${LCV}]}" | grep '^LABEL=' | cut -d= -f2)
|
||||
OUTPUT=$(blkid -o export "${PARTITIONS[${LCV}]}" | grep '^\(TYPE=\)' | cut -d= -f2 | sed 's:linux_raid_member:raid:g')
|
||||
PADL=$(( ( ${PCOLS[${LCV}]} - ${#OUTPUT} ) / 2 ))
|
||||
PADR=$(( ${PCOLS[${LCV}]} - ${#OUTPUT} - ${PADL} ))
|
||||
printf '%*s%s%*s' ${PADL} "" "${OUTPUT}" ${PADR} ""
|
||||
[ ${LCV} -lt $(( ${#PARTITIONS[@]} - 1 )) ] && echo -n "│"
|
||||
done
|
||||
printf "%s\n" "│"
|
||||
|
||||
printf "%s" "│"
|
||||
for (( LCV = 0; LCV < ${#PARTITIONS[@]}; LCV++ )); do
|
||||
#OUTPUT=$(blkid -o export "${PARTITIONS[${LCV}]}" | grep '^LABEL=' | cut -d= -f2)
|
||||
OUTPUT=$(blkid -o export "${PARTITIONS[${LCV}]}" | grep '^\(LABEL=\)' | cut -d= -f2)
|
||||
PADL=$(( ( ${PCOLS[${LCV}]} - ${#OUTPUT} ) / 2 ))
|
||||
PADR=$(( ${PCOLS[${LCV}]} - ${#OUTPUT} - ${PADL} ))
|
||||
printf '%*s%s%*s' ${PADL} "" "${OUTPUT}" ${PADR} ""
|
||||
[ ${LCV} -lt $(( ${#PARTITIONS[@]} - 1 )) ] && echo -n "│"
|
||||
done
|
||||
printf "%s\n" "│"
|
||||
|
||||
echo -n "└"
|
||||
for (( LCV = 0; LCV < ${#PARTITIONS[@]}; LCV++ )); do
|
||||
printf '─%.0s' $(seq 1 ${PCOLS[${LCV}]})
|
||||
[ ${LCV} -lt $(( ${#PARTITIONS[@]} - 1 )) ] && echo -n "┴"
|
||||
done
|
||||
echo "┘"
|
||||
|
||||
done
|
||||
Reference in New Issue
Block a user