# the SCSI control channel is /dev/sg0, and the read/write device
# is /dev/nst0.
#
+# The commands are:
+# Command Function
+# unload unload a given slot
+# load load a given slot
+# loaded which slot is loaded?
+# list list Volume names (requires barcode reader)
+# slots how many slots total?
+#
+# Slots are numbered from 1 ...
+# Drives are numbered from 0 ...
+#
+#
# If you need to an offline, refer to the drive as $4
# e.g. mt -f $4 offline
#
MTX=@MTX@
+# mt status output
+# SunOS No Additional Sense
+# FreeBSD Current Driver State: at rest.
+# Linux ONLINE
+
+OS=`uname`
+case ${OS} in
+ SunOS)
+ ready="No Additional Sense"
+ ;;
+ FreeBSD)
+ ready="Current Driver State: at rest."
+ ;;
+ *)
+ ready="ONLINE"
+ ;;
+esac
+
#
# log whats done
#
#
dbgfile="@working_dir@/mtx.log"
debug() {
- if test -e $dbgfile; then
+ if test -f $dbgfile; then
echo "`date +\"%Y%m%d-%H:%M:%S\"` $*" >> $dbgfile
fi
}
# Create a temporary file
#
make_temp_file() {
- TMPFILE=`mktemp -t mtx.XXXXXXXXXX`
+ TMPFILE=`mktemp @working_dir@/mtx.XXXXXXXXXX`
if test x${TMPFILE} = x; then
TMPFILE="@working_dir@/mtx.$$"
if test -f ${TMPFILE}; then
# Note, this is very system dependent, so if you are
# not running on Linux, you will probably need to
# re-write it, or at least change the grep target.
+# We've attempted to get the appropriate OS grep targets
+# in the code at the top of this script.
#
wait_for_drive() {
i=0
while [ $i -le 300 ]; do # Wait max 300 seconds
- if mt -f $1 status | grep ONLINE >/dev/null 2>&1; then
+ if mt -f $1 status | grep ${ready} >/dev/null 2>&1; then
break
fi
debug "Device $1 - not ready, retrying..."
pCountNeed=$2
if test $pCount -lt $pCountNeed; then
echo "usage: mtx-changer ctl-device command [slot archive-device drive-index]"
- echo " Insufficient number of arguments arguments given."
+ echo " Insufficient number of arguments given."
if test $pCount -lt 2; then
echo " Mimimum usage is first two arguments ..."
else
#
# Increase the sleep time if you have a slow device
# or remove the sleep and add the following:
-# wait_for_drive $device
- sleep 15
+# sleep 15
+ wait_for_drive $device
exit $rtn
;;
debug "Doing mtx -f $ctl -- to list volumes"
make_temp_file
# Enable the following if you are using barcodes and need an inventory
-# $(MTX) -f $ctl inventory
+# ${MTX} -f $ctl inventory
${MTX} -f $ctl status >${TMPFILE}
rtn=$?
- cat ${TMPFILE} | grep " *Storage Element [0-9]*:.*Full" | awk "{print \$3 \$4}" | sed "s/Full *\(:VolumeTag=\)*//"
- cat ${TMPFILE} | grep "^Data Transfer Element [0-9]*:Full (Storage Element [0-9]" | awk '{printf "%s:%s\n",$7,$10}'
- rm -f ${TMPFILE} >/dev/null 2>&1
+ cat ${TMPFILE} | grep " Storage Element [0-9]*:.*Full" | awk "{print \$3 \$4}" | sed "s/Full *\(:VolumeTag=\)*//"
#
# If you have a VXA PacketLoader and the above does not work, try
# turning it off and enabling the following line.
-# ${MTX} -f $ctl status | grep " *Storage Element [0-9]*:.*Full" | sed "s/*Storage Element //" | sed "s/Full :VolumeTag=//"
+# cat ${TMPFILE} | grep " *Storage Element [0-9]*:.*Full" | sed "s/ Storage Element //" | sed "s/Full :VolumeTag=//"
+#
+ cat ${TMPFILE} | grep "^Data Transfer Element [0-9]*:Full (Storage Element [0-9]" | awk '{printf "%s:%s\n",$7,$10}'
+ rm -f ${TMPFILE} >/dev/null 2>&1
exit $rtn
;;