| #!/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, |
| # and model number. |
| |
| |
| helpstr=" |
| label: Show filesystem label. |
| model: Show disk model number. |
| size: Show the disk capacity. |
| vendor: Show the disk vendor. |
| lsblk: Show the disk size, vendor, and model number." |
| |
| script="${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" |
| 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 |