]>
Commit | Line | Data |
---|---|---|
cae5b340 AX |
1 | #!/bin/sh |
2 | # | |
3 | # Print some common lsblk values | |
4 | # | |
5 | # Any (lowercased) name symlinked to the lsblk script will be passed to lsblk | |
6 | # as one of its --output names. Here's a partial list of --output names | |
7 | # from the lsblk binary: | |
8 | # | |
9 | # Available columns (for --output): | |
10 | # NAME device name | |
11 | # KNAME internal kernel device name | |
12 | # MAJ:MIN major:minor device number | |
13 | # FSTYPE filesystem type | |
14 | # MOUNTPOINT where the device is mounted | |
15 | # LABEL filesystem LABEL | |
16 | # UUID filesystem UUID | |
17 | # RA read-ahead of the device | |
18 | # RO read-only device | |
19 | # RM removable device | |
20 | # MODEL device identifier | |
21 | # SIZE size of the device | |
22 | # STATE state of the device | |
23 | # OWNER user name | |
24 | # GROUP group name | |
25 | # MODE device node permissions | |
26 | # ALIGNMENT alignment offset | |
27 | # MIN-IO minimum I/O size | |
28 | # OPT-IO optimal I/O size | |
29 | # PHY-SEC physical sector size | |
30 | # LOG-SEC logical sector size | |
31 | # ROTA rotational device | |
32 | # SCHED I/O scheduler name | |
33 | # RQ-SIZE request queue size | |
34 | # TYPE device type | |
35 | # DISC-ALN discard alignment offset | |
36 | # DISC-GRAN discard granularity | |
37 | # DISC-MAX discard max bytes | |
38 | # DISC-ZERO discard zeroes data | |
39 | # | |
40 | # If the script is run as just 'lsblk' then print out disk size, vendor, | |
41 | # and model number. | |
42 | ||
43 | ||
44 | helpstr=" | |
45 | label: Show filesystem label. | |
46 | model: Show disk model number. | |
47 | size: Show the disk capacity. | |
48 | vendor: Show the disk vendor. | |
49 | lsblk: Show the disk size, vendor, and model number." | |
50 | ||
51 | script=$(basename "$0") | |
52 | ||
53 | if [ "$1" = "-h" ] ; then | |
54 | echo "$helpstr" | grep "$script:" | tr -s '\t' | cut -f 2- | |
55 | exit | |
56 | fi | |
57 | ||
58 | if [ "$script" = "lsblk" ] ; then | |
59 | list="size vendor model" | |
60 | else | |
61 | list=$(echo "$script" | tr '[:upper:]' '[:lower:]') | |
62 | fi | |
63 | ||
64 | # Older versions of lsblk don't support all these values (like SERIAL). | |
65 | for i in $list ; do | |
66 | ||
67 | # Special case: Looking up the size of a file-based vdev can't | |
68 | # be done with lsblk. | |
69 | if [ "$i" = "size" ] && [ -f "$VDEV_UPATH" ] ; then | |
70 | size=$(du -h --apparent-size "$VDEV_UPATH" | cut -f 1) | |
71 | echo "size=$size" | |
72 | continue | |
73 | fi | |
74 | ||
75 | ||
76 | val="" | |
77 | if val=$(eval "lsblk -dl -n -o $i $VDEV_UPATH 2>/dev/null") ; then | |
78 | # Remove leading/trailing whitespace from value | |
79 | val=$(echo "$val" | sed -e 's/^[[:space:]]*//' \ | |
80 | -e 's/[[:space:]]*$//') | |
81 | fi | |
82 | echo "$i=$val" | |
83 | done |