/usr/bin/sas_disk_blink is in sdparm 1.08-1build1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | #!/bin/bash
# sas_disk_blink
#
# Script to blink the LED on a SAS disk.
# By default it blinks the LED for 30 seconds, thereafter leaving
# the LED in the state it was prior to this command being called.
# The blink is one second on, one second off, etc.
#
# Uses sdparm rather than sg3_utils as the former is simpler to
# use for setting mode page value.
#
# Douglas Gilbert 20130513
seconds=30
verbose=""
usage()
{
echo "Usage: sas_disk_blink [-h] [-s <n>] [-v] <sas_device>"
echo " where:"
echo " -h, --help print usage message"
echo " -s <n>, --set <n> where <n> is:"
echo " 0 - set RLM to 0"
echo " 1 - set RLM to 1"
echo " >1 - blink LED for <n> seconds"
echo " (default: blink for 30 seconds)"
echo " -v, --verbose more verbose output"
echo ""
echo "Use Ready LED Meaning (RLM) mode page field to blink SAS device LED"
}
opt="$1"
while test ! -z "$opt" -a -z "${opt##-*}"; do
opt=${opt#-}
case "$opt" in
h|-help) usage ; exit 0 ;;
s|-set) shift ; let seconds=$1 ;;
v|-verbose) verbose="-v" ;;
vv) verbose="-vv" ;;
vvv) verbose="-vvv" ;;
*) echo "Unknown option: -$opt " ; exit 1 ;;
esac
shift
opt="$1"
done
if [ $# -lt 1 ]
then
usage
exit 1
fi
if ( which sdparm >/dev/null 2>&1 ) ; then
true
else
echo "sdparm not found"
sdparm
fi
if [ $seconds = "0" ]
then
sdparm ${verbose} -t sas -c RLM $1
exit $?
elif [ $seconds = "1" ]
then
sdparm ${verbose} -t sas -s RLM $1
exit $?
elif [ $seconds -gt 1 ]
then
outt=$(sdparm ${verbose} -t sas -g RLM -H $1)
let res=$?
if [ $res -ne 0 ]
then
exit $res
fi
if [ ${outt:0:4} = "0x00" ]
then
let start=0
else
let start=1
fi
echo "start blinking for $seconds seconds"
for (( times = 1; times < $seconds; times=$times+2 )); do
if [ $start -eq 0 ]
then
sdparm ${verbose} -q -t sas -s RLM $1
let res=$?
if [ $res -ne 0 ]
then
exit $res
fi
sleep 1
sdparm ${verbose} -q -t sas -c RLM $1
sleep 1
else
sdparm ${verbose} -q -t sas -c RLM $1
let res=$?
if [ $res -ne 0 ]
then
exit $res
fi
sleep 1
sdparm ${verbose} -q -t sas -s RLM $1
sleep 1
fi
done
echo "stop blinking"
fi
|