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 if [ -z "$VDEV_ENC_SYSFS_PATH" ] ; then 28 echo "$i=" 29 continue 30 fi 31 32 val="" 33 case $i in 34 enc) 35 val=$(ls "$VDEV_ENC_SYSFS_PATH/../../" 2>/dev/null) 36 ;; 37 slot) 38 val=$(cat "$VDEV_ENC_SYSFS_PATH/slot" 2>/dev/null) 39 ;; 40 encdev) 41 val=$(ls "$VDEV_ENC_SYSFS_PATH/../device/scsi_generic" 2>/dev/null) 42 ;; 43 fault_led) 44 # JBODs fault LED is called 'fault', NVMe fault LED is called 45 # 'attention'. 46 if [ -f "$VDEV_ENC_SYSFS_PATH/fault" ] ; then 47 val=$(cat "$VDEV_ENC_SYSFS_PATH/fault" 2>/dev/null) 48 elif [ -f "$VDEV_ENC_SYSFS_PATH/attention" ] ; then 49 val=$(cat "$VDEV_ENC_SYSFS_PATH/attention" 2>/dev/null) 50 fi 51 ;; 52 locate_led) 53 val=$(cat "$VDEV_ENC_SYSFS_PATH/locate" 2>/dev/null) 54 ;; 55 esac 56 echo "$i=$val" 57done 58 59