85 lines
2.4 KiB
Plaintext
85 lines
2.4 KiB
Plaintext
|
#!/bin/sh
|
||
|
#
|
||
|
# Print some common lsblk values
|
||
|
#
|
||
|
# Any (lowercased) name symlinked to the lsblk script will be passed to lsblk
|
||
|
# as one of its --output names. Here's a partial list of --output names
|
||
|
# from the lsblk binary:
|
||
|
#
|
||
|
# Available columns (for --output):
|
||
|
# NAME device name
|
||
|
# KNAME internal kernel device name
|
||
|
# MAJ:MIN major:minor device number
|
||
|
# FSTYPE filesystem type
|
||
|
# MOUNTPOINT where the device is mounted
|
||
|
# LABEL filesystem LABEL
|
||
|
# UUID filesystem UUID
|
||
|
# RA read-ahead of the device
|
||
|
# RO read-only device
|
||
|
# RM removable device
|
||
|
# MODEL device identifier
|
||
|
# SIZE size of the device
|
||
|
# STATE state of the device
|
||
|
# OWNER user name
|
||
|
# GROUP group name
|
||
|
# MODE device node permissions
|
||
|
# ALIGNMENT alignment offset
|
||
|
# MIN-IO minimum I/O size
|
||
|
# OPT-IO optimal I/O size
|
||
|
# PHY-SEC physical sector size
|
||
|
# LOG-SEC logical sector size
|
||
|
# ROTA rotational device
|
||
|
# SCHED I/O scheduler name
|
||
|
# RQ-SIZE request queue size
|
||
|
# TYPE device type
|
||
|
# DISC-ALN discard alignment offset
|
||
|
# DISC-GRAN discard granularity
|
||
|
# DISC-MAX discard max bytes
|
||
|
# DISC-ZERO discard zeroes data
|
||
|
#
|
||
|
# If the script is run as just 'lsblk' then print out disk size, vendor,
|
||
|
# model number and serial number.
|
||
|
|
||
|
|
||
|
helpstr="
|
||
|
label: Show filesystem label.
|
||
|
model: Show disk model number.
|
||
|
serial: Show disk serial number.
|
||
|
size: Show the disk capacity.
|
||
|
vendor: Show the disk vendor.
|
||
|
lsblk: Show the disk size, vendor, model number, and serial number."
|
||
|
|
||
|
script=$(basename "$0")
|
||
|
|
||
|
if [ "$1" = "-h" ] ; then
|
||
|
echo "$helpstr" | grep "$script:" | tr -s '\t' | cut -f 2-
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
if [ "$script" = "lsblk" ] ; then
|
||
|
list="size vendor model serial"
|
||
|
else
|
||
|
list=$(echo "$script" | tr '[:upper:]' '[:lower:]')
|
||
|
fi
|
||
|
|
||
|
# Older versions of lsblk don't support all these values (like SERIAL).
|
||
|
for i in $list ; do
|
||
|
|
||
|
# Special case: Looking up the size of a file-based vdev can't
|
||
|
# be done with lsblk.
|
||
|
if [ "$i" = "size" ] && [ -f "$VDEV_UPATH" ] ; then
|
||
|
size="$(du -h --apparent-size $VDEV_UPATH | cut -f 1)"
|
||
|
echo "size=$size"
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
|
||
|
val=""
|
||
|
if val=$(eval "lsblk -dl -n -o $i $VDEV_UPATH 2>/dev/null") ; then
|
||
|
# Remove leading/trailing whitespace from value
|
||
|
val=$(echo "$val" | sed -e 's/^[[:space:]]*//' \
|
||
|
-e 's/[[:space:]]*$//')
|
||
|
fi
|
||
|
echo "$i=$val"
|
||
|
done
|