+++ /dev/null
-#!@SHELL@
-#
-# Exit Status:
-# 0 Alles Ok
-# 1 Illegal Request
-# 2 Fatal Error
-#
-
-# try to hit all the possibilities here
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-sbindir=@sbindir@
-libexecdir=@libexecdir@
-
-PATH=$sbindir:$libexecdir:/usr/bin:/bin:/usr/sbin:/sbin:/usr/ucb
-export PATH
-
-#
-# Changer config file (changerfile)
-#
-# resend_mail=900 # 15 minutes
-# timeout_mail=604800 # 7 days
-# request="tty" # Use the tty to ask the user to change tape.
-# # Can't be use by cron
-# request="email" # Send an email to ask the user to change tape.
-# request="tty_email" # Use the tty if it exist or send an email.
-# #Default is "tty_email"
-#
-#
-
-if [ -d "@AMANDA_DBGDIR@" ]; then
- logfile=@AMANDA_DBGDIR@/changer.debug
-else
- logfile=/dev/null
-fi
-
-USE_VERSION_SUFFIXES="@USE_VERSION_SUFFIXES@"
-if test "$USE_VERSION_SUFFIXES" = "yes"; then
- SUF="-@VERSION@"
-else
- SUF=
-fi
-
-myname=$0
-
-EGREP='@EGREP@'
-
-if [ -x $sbindir/ammt$SUF ]; then
- MT=$sbindir/ammt$SUF
- MTF=-f
-elif [ -x "@MT@" ]; then
- MT=@MT@
- MTF=@MT_FILE_FLAG@
-else
- answer="<none> $myname: mt program not found"
- code=1
- echo "Exit -> $answer" >> $logfile
- echo "$answer"
- exit $code
-fi
-echo MT "->" $MT $MTF >> $logfile
-
-if [ -x $sbindir/amdd$SUF ]; then
- DD=$sbindir/amdd$SUF
-elif [ -x "@DD@" ]; then
- DD=@DD@
-else
- answer="<none> $myname: dd program not found"
- code=1
- echo "Exit -> $answer" >> $logfile
- echo "$answer"
- exit $code
-fi
-echo DD "->" $DD >> $logfile
-
-MAILER=@MAILER@
-ONLINEREGEX="ONLINE|READY|sense[_ ]key[(]0x0[)]|sense key error = 0|^er=0$|, mt_erreg: 0x0|^Current Driver State: at rest$"
-REPORTTO=`amgetconf$SUF mailto`
-tape=`amgetconf$SUF tapedev`
-
-if [ -z "$tape" ]; then
- echo "<none> tapedev not specified in amanda.conf."
- exit 2
-fi
-
-ORG=`amgetconf$SUF ORG`
-
-firstslot=1
-lastslot=99
-resend_mail=900 # 15 minutes
-timeout_mail=604800 # 7 days
-
-changerfile=`amgetconf$SUF changerfile`
-
-conf_match=`expr "$changerfile" : .\*\.conf\$`
-if [ $conf_match -ge 6 ]; then
- configfile=$changerfile
- changerfile=`echo $changerfile | sed 's/.conf$//g'`
-else
- configfile=$changerfile.conf
-fi
-
-cleanfile=$changerfile-clean
-accessfile=$changerfile-access
-slotfile=$changerfile-slot
-[ ! -f $cleanfile ] && echo 0 > $cleanfile
-[ ! -f $accessfile ] && echo 0 > $accessfile
-[ ! -f $slotfile ] && echo $firstslot > $slotfile
-cleancount=`cat $cleanfile`
-accesscount=`cat $accessfile`
-slot=`cat $slotfile`
-
-request_tty() {
- if > /dev/tty; then
- echo -n "Insert tape into slot $1 and press return" > /dev/tty
- read ANSWER < /dev/tty
- else
- echo "no /dev/tty to ask to change tape"
- exit 1
- fi
-}
-
-
-###
-# If $changerfile exists, source it into this script. One reason is to
-# override the request() function above which gets called to request
-# that a tape be mounted. Here is an alternate versions of request()
-# that does things more asynchronous:
-#
-request_email() {
- # Send E-mail about the mount request and wait for the drive
- # to go ready by checking the status once a minute. Repeat
- # the E-mail once an hour in case it gets lost.
- timeout=0
- gtimeout=$timeout_mail
- while true;do
- if [ $gtimeout -le 0 ]; then
- echo "timeout waiting for tape online"
- exit 1;
- fi
- if [ $timeout -le 0 ]; then
- msg="insert Amanda tape into slot $1 ($tape)"
- subject="$ORG AMANDA TAPE MOUNT REQUEST FOR SLOT $1"
- echo "$msg" | $MAILER -s "$subject" $REPORTTO
- timeout=$resend_mail
- fi
- echo " -> rewind $tape" >> $logfile
- $MT $MTF $tape rewind >> $logfile 2>&1
- echo " -> status $tape" >> $logfile
- used=`$MT $MTF $tape status 2>&1 | tee -a $logfile | $EGREP "$ONLINEREGEX"`
- echo " -> loaded <$used>" >> $logfile
- if [ ! -z "$used" ];then
- break
- fi
- sleep 60
- timeout=`expr $timeout - 60`
- gtimeout=`expr $gtimeout - 60`
- done
-}
-request_tty_email() {
- if > /dev/tty; then
- echo -n "Insert tape into slot $1 and press return" > /dev/tty
- read ANSWER < /dev/tty
- else
- request_email "$1"
- fi
-}
-
-request() {
- if [ X"$request" = X"tty" ]; then
- request_tty "$1"
- else if [ X"$request" = X"email" ]; then
- request_email "$1"
- else
- request_tty_email "$1"
- fi
- fi
-}
-
-if [ -f $configfile ]; then
- . $configfile
-fi
-
-#
-
-eject() {
- echo " -> rewind $tape" >> $logfile
- $MT $MTF $tape rewind >> $logfile 2>&1
- echo " -> status $tape" >> $logfile
- used=`$MT $MTF $tape status 2>&1 | tee -a $logfile | $EGREP "$ONLINEREGEX"`
- echo " -> loaded <$used>" >> $logfile
- if [ ! -z "$used" ];then
- echo " -> offline $tape" >> $logfile
- $MT $MTF $tape offline >> $logfile 2>&1
- answer="$slot $tape"
- code=0
- else
- answer="<none> $myname: Drive was not loaded"
- code=1
- fi
- echo "Exit -> $answer" >> $logfile
- echo "$answer"
- exit $code
-}
-
-#
-
-reset() {
- echo " -> rewind $tape" >> $logfile
- $MT $MTF $tape rewind >> $logfile 2>&1
- echo " -> status $tape" >> $logfile
- used=`$MT $MTF $tape status 2>&1 | tee -a $logfile | $EGREP "$ONLINEREGEX"`
- echo " -> loaded <$used>" >> $logfile
- if [ ! -z "$used" ];then
- answer="$slot $tape"
- else
- answer="0 $tape"
- fi
- echo "Exit -> $answer" >> $logfile
- echo "$answer"
- exit 0
-}
-
-# load #
-
-loadslot() {
- echo " -> rewind $tape" >> $logfile
- $MT $MTF $tape rewind >> $logfile 2>&1
- echo " -> status $tape" >> $logfile
- used=`$MT $MTF $tape status 2>&1 | tee -a $logfile | $EGREP "$ONLINEREGEX"`
- echo " -> loaded <$used>" >> $logfile
- whichslot=$1
- case $whichslot in
- current)
- load=$slot
- [ $load -eq 0 ] && load=$firstslot
- [ $load -gt $lastslot ] && load=$firstslot
- [ $load -lt $firstslot ] && load=$lastslot
- ;;
- next|advance)
- load=`expr $slot + 1`
- [ $load -gt $lastslot ] && load=$firstslot
- ;;
- prev)
- load=`expr $slot - 1`
- [ $load -lt $firstslot ] && load=$lastslot
- ;;
- first)
- load=$firstslot
- ;;
- last)
- load=$lastslot
- ;;
- [0-9]|[0-9][0-9])
- if [ $1 -lt $firstslot -o $1 -gt $lastslot ]; then
- answer="<none> $myname: slot must be $firstslot .. $lastslot"
- echo "Exit -> $answer" >> $logfile
- echo "$answer"
- exit 1
- fi
- load=$1
- ;;
- *)
- answer="<none> $myname: illegal slot: $1"
- echo "Exit -> $answer" >> $logfile
- echo "$answer"
- exit 1
- ;;
- esac
- #
- if [ ! -z "$used" -a $load = $slot ];then
- # already loaded
- answer="$slot $tape"
- echo "Exit -> $answer" >> $logfile
- echo "$answer"
- exit 0
- fi
-
- # if [ $load = $ecleanslot ]; then
- # expr $cleancount + 1 > $cleanfile
- # echo 0 > $accessfile
- # else
- expr $accesscount + 1 > $accessfile
- # if [ $accesscount -gt 9 ]; then
- # $myname -slot $cleanslot >/dev/null
- # used=0
- # fi
- # fi
-
- #
- if [ ! -z "$used" ]; then
- echo " -> offline $tape" >> $logfile
- $MT $MTF $tape offline >> $logfile 2>&1
- used=""
- fi
- if [ $whichslot = advance ]; then
- tape=/dev/null
- else
- echo " -> load $load" >> $logfile
- while [ -z "$used" ]; do
- request $load
- echo " -> rewind $tape" >> $logfile
- $MT $MTF $tape rewind >> $logfile 2>&1
- echo " -> status $tape" >> $logfile
- used=`$MT $MTF $tape status 2>&1 | tee -a $logfile | $EGREP "$ONLINEREGEX"`
- echo " -> loaded <$used>" >> $logfile
- done
- $DD if=$tape bs=32k count=1 >> $logfile 2>&1
- fi
- echo $load > $slotfile
- answer="$load $tape"
- echo "Exit -> $answer" >> $logfile
- echo "$answer"
- exit 0
-}
-
-#
-
-info() {
- echo " -> rewind $tape" >> $logfile
- $MT $MTF $tape rewind >> $logfile 2>&1
- echo " -> status $tape" >> $logfile
- used=`$MT $MTF $tape status 2>&1 | tee -a $logfile | $EGREP "$ONLINEREGEX"`
- echo " -> loaded <$used>" >> $logfile
- if [ -z "$used" ];then
- answer="0 $lastslot 1"
- else
- answer="$slot $lastslot 1"
- fi
- echo "Exit -> $answer" >> $logfile
- echo "$answer"
- exit 0
-}
-
-#
-# main part
-#
-
-echo Args "->" "$@" >> $logfile
-while [ $# -ge 1 ];do
- case $1 in
- -slot)
- shift
- loadslot $*
- ;;
- -info)
- shift
- info
- ;;
- -reset)
- shift
- reset
- ;;
- -eject)
- shift
- eject
- ;;
- *)
- echo "<none> $myname: Unknown option $1"
- exit 2
- ;;
- esac
-done
-
-exit 0