aboutsummaryrefslogtreecommitdiff
path: root/sysutils/bacula-server/files/chio-bacula
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/bacula-server/files/chio-bacula')
-rw-r--r--sysutils/bacula-server/files/chio-bacula191
1 files changed, 0 insertions, 191 deletions
diff --git a/sysutils/bacula-server/files/chio-bacula b/sysutils/bacula-server/files/chio-bacula
deleted file mode 100644
index a586cbd1e914..000000000000
--- a/sysutils/bacula-server/files/chio-bacula
+++ /dev/null
@@ -1,191 +0,0 @@
-#!/bin/sh
-#
-# Bacula interface to mtx autoloader
-# (By Lars Köller, lars+bacula@koellers.net)
-#
-# If you set in your Device resource
-#
-# Changer Command = "path-to-this-script/chio-bacula" %c %o %S %a
-# you will have the following input to this script:
-#
-# chio-bacula "changer-device" "command" "slot" "archive-device" "drive-index"
-# $1 $2 $3 $4 $5
-# for example:
-#
-# chio-bacula /dev/sg0 load 1 /dev/nst0 0 (on a FreeBSD system)
-#
-# If you need to to an offline, refer to the drive as $4
-# e.g. mt -f $f offline
-#
-# Many changers need an offline after the unload. Also many
-# changers need a sleep 60 after the mtx load.
-#
-# N.B. If you change the script, take care to return either
-# the mtx exit code or a 0. If the script exits with a non-zero
-# exit code, Bacula will assume the request failed.
-#
-
-# This simulates a barcode reader in the changer.
-# The labes of the virtual barcode reader are located in the BARCODE_FILE
-SIMULATE_BARCODE=true
-BARCODE_FILE=/usr/local/etc/bacula-barcodes
-MTX=/bin/chio
-# Set default values (see case statement below for
-# free mapping of drive index and tape device
-# We have a double drive Qualstar where drive 1 is the default bacula drive
-TAPE=/dev/nrsa0
-DRIVE=0
-# Time to wait for (un)loading
-SLEEP=20
-
-me=$(basename $0)
-
-# Debug
-logger -p user.err "$me $@"
-
-# The changer device
-if [ -z "$1" ] ; then
- usage;
-else
- CHANGER=$1
-fi
-# The command
-if [ -z "$2" ] ; then
- usage;
-else
- COMMAND=$2
-fi
-# The slot number
-if [ ! -z "$3" ]; then
- SLOT=$3
- # btape fill says "... slot 1 drive 0" :-(
- if [ "$SLOT" = "slot" ]; then
- shift
- SLOT=$3
- fi
-fi
-# Set tape device
-if [ ! -z "$4" ]; then
- TAPE=$4
-fi
-# Set drive for chio as you need
-# here you can also map to any tape device
-# DRIVE is the chio drive number!
-case $5 in
- 0)
- DRIVE=0
- TAPE=/dev/nrsa0
- #DRIVE=1
- #TAPE=/dev/nrsa2
- ;;
- 1)
- DRIVE=1
- #DRIVE=0
- TAPE=/dev/nrsa1
- ;;
-esac
-
-usage()
-{
- echo ""
- echo "The $me script for bacula"
- echo "--------------------------------------"
- echo ""
- echo "usage: $me <changer-device> <command> [slot] [devicename of tapedrive] [drive index]"
- echo ""
- echo "Valid commands:"
- echo ""
- echo "unload Unloads a tape into the slot"
- echo " from where it was loaded."
- echo "load <slot> Loads a tape from the slot <slot>"
- echo " (slot-base is calculated to 1 as first slot)"
- echo "list Lists full storage slots"
- echo "loaded Gives slot from where the tape was loaded."
- echo " 0 means the tape drive is empty."
- echo "slots Gives Number of aviable slots."
- echo ""
- echo "Example:"
- echo " mtx-changer /dev/changer load 1 loads a tape from slot 1"
- echo ""
- exit 2
-}
-
-
-case ${COMMAND} in
- unload)
- # enable the following line if you need to eject the cartridge
- mt -f ${TAPE} off
- sleep 2
- # if we have a slot, try it
- if [ ! -z "$SLOT" ]; then
- ${MTX} -f ${CHANGER} move drive ${DRIVE} slot $((${SLOT}-1))
- exit $?
- fi
- # Try other way (works if source element information is valid for drive)
- ${MTX} -f ${CHANGER} return drive ${DRIVE}
- # If the changer is power cycled with a tape loaded in a drive
- # we can compute the slot in case of a complete filled magazine, with
- # one slot free.
- if [ "$?" != "0" ]; then
- free_slot=`${MTX} -f ${CHANGER} stat | grep "^slot " | grep -v "FULL" | awk '{print $2}'`
- free_slot=${free_slot%:}
- ${MTX} -f ${CHANGER} move drive ${DRIVE} slot $free_slot
- fi
- ;;
-
- load)
- ${MTX} -f ${CHANGER} move slot $((${SLOT}-1)) drive ${DRIVE}
- rtn=$?
- # Increase the sleep time if you have a slow device
- sleep $SLEEP
- exit $rtn
- ;;
-
- list)
- if [ "${SIMULATE_BARCODE}" = "true" ]; then
- if [ -f "$BARCODE_FILE" ]; then
- cat $BARCODE_FILE | grep -v "^#"
- exit 0
- else
- echo "Barcode file $BARCODE_FILE missing ... exiting!"
- exit 1
- fi
- else
- ${MTX} -f ${CHANGER} status | grep "^slot .*: .*FULL>" | awk '{print $2}' | awk -F: '{print $1+1" "}' | tr -d "[\r\n]"
- fi
- ;;
-
- loaded)
- # echo "Request loaded"
- ${MTX} -f ${CHANGER} status -S > /tmp/mtx.$$
- rtn=$?
- # Try to get chio slot source from drive entry
- SLOT=$(cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: <FULL> .*slot" | awk '{print $6+1}' | tr -d ">")
- if [ -z "$SLOT" ]; then
- # This handles the case a source slot is not available (power on
- # of the changer with a drive loaded) and all other slots are
- # occupied with a tape!
- SLOT=$(cat /tmp/mtx.$$ | grep "^slot .*: <ACCESS>" | awk '{print $2+1}')
- if [ -z "$SLOT" ]; then
- echo 0
- else
- echo $SLOT
- fi
- else
- echo $SLOT
- fi
- # All tapes are in the slots
- #cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: .* source: <>" | awk "{print 0}"
- rm -f /tmp/mtx.$$
- exit $rtn
- ;;
-
- slots)
- # echo "Request slots"
- ${MTX} -f ${CHANGER} status | grep "^slot " | tail -1 | awk '{print $2+1}' | tr -d ":"
- ;;
-
- *)
- usage
- ;;
-esac