1#!/bin/sh 2# 3# Print SCSI Enclosure Services (SES) info. The output is dependent on the name 4# of the script/symlink used to call it. 5# 6helpstr=" 7enc: Show disk enclosure w:x:y:z value. 8slot: Show disk slot number as reported by the enclosure. 9encdev: Show /dev/sg* device associated with the enclosure disk slot. 10fault_led: Show value of the disk enclosure slot fault LED. 11locate_led: Show value of the disk enclosure slot locate LED. 12ses: Show disk's enc, enc device, slot, and fault/locate LED values." 13 14script="${0##*/}" 15if [ "$1" = "-h" ] ; then 16 echo "$helpstr" | grep "$script:" | tr -s '\t' | cut -f 2- 17 exit 18fi 19 20if [ "$script" = "ses" ] ; then 21 scripts='enc encdev slot fault_led locate_led' 22else 23 scripts="$script" 24fi 25 26for i in $scripts ; do 27 # shellcheck disable=SC2154 28 if [ -z "$VDEV_ENC_SYSFS_PATH" ] ; then 29 echo "$i=" 30 continue 31 fi 32 33 val="" 34 case $i in 35 enc) 36 val=$(ls "$VDEV_ENC_SYSFS_PATH/../../" 2>/dev/null) 37 ;; 38 slot) 39 val=$(cat "$VDEV_ENC_SYSFS_PATH/slot" 2>/dev/null) 40 ;; 41 encdev) 42 val=$(ls "$VDEV_ENC_SYSFS_PATH/../device/scsi_generic" 2>/dev/null) 43 ;; 44 fault_led) 45 # JBODs fault LED is called 'fault', NVMe fault LED is called 46 # 'attention'. 47 if [ -f "$VDEV_ENC_SYSFS_PATH/fault" ] ; then 48 val=$(cat "$VDEV_ENC_SYSFS_PATH/fault" 2>/dev/null) 49 elif [ -f "$VDEV_ENC_SYSFS_PATH/attention" ] ; then 50 val=$(cat "$VDEV_ENC_SYSFS_PATH/attention" 2>/dev/null) 51 fi 52 ;; 53 locate_led) 54 val=$(cat "$VDEV_ENC_SYSFS_PATH/locate" 2>/dev/null) 55 ;; 56 *) 57 val=invalid 58 ;; 59 esac 60 echo "$i=$val" 61done 62