]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/scripts/disk-changer.in
Add new nagios_plugin_check_bacula.tgz from
[bacula/bacula] / bacula / scripts / disk-changer.in
index 85de7bf1de9e15e9bf1c8da74b56f4fc0f75c3ed..59ddd4a1052c04a882de97cfc2a1e4e0d481fb5d 100644 (file)
@@ -2,6 +2,33 @@
 #
 # Bacula interface to virtual autoloader using disk storage
 #
+#  Written by Kern Sibbald
+#
+#  Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
+#
+#  The main author of Bacula is Kern Sibbald, with contributions from
+#  many others, a complete list can be found in the file AUTHORS.
+#  This program is Free Software; you can redistribute it and/or
+#  modify it under the terms of version two of the GNU General Public
+#  License as published by the Free Software Foundation, which is 
+#  listed in the file LICENSE.
+#
+#  This program is distributed in the hope that it will be useful, but
+#  WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+#  General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+#  02110-1301, USA.
+#
+#  Bacula® is a registered trademark of Kern Sibbald.
+#  The licensor of Bacula is the Free Software Foundation Europe
+#  (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+#  Switzerland, email:ftf@fsfeurope.org.
+#
+#
 #  $Id$
 #
 #  If you set in your Device resource
@@ -64,7 +91,7 @@ wd=@working_dir@
 #
 dbgfile="$wd/disk-changer.log"
 debug() {
-    if test -e $dbgfile; then
+    if test -f $dbgfile; then
        echo "`date +\"%Y%m%d-%H:%M:%S\"` $*" >> $dbgfile
     fi
 }
@@ -164,7 +191,12 @@ case $cmd in
    unload)
       debug "Doing disk -f $ctl unload $slot $device $drive"
       get_dir
-      ld=`cat $dir/loaded${drive}`
+      if [ -f $dir/loaded${drive} ]; then
+        ld=`cat $dir/loaded${drive}`
+      else 
+        echo "Storage Element $slot is Already Full"
+        exit 1
+      fi
       if [ $slot -eq $ld ]; then
         echo "0" >$dir/loaded${drive}
         unlink $device 2>/dev/null >/dev/null
@@ -178,25 +210,42 @@ case $cmd in
    load)
       debug "Doing disk $ctl load $slot $device $drive"
       get_dir
+      i=0
+      while [ $i -le $maxdrive ]; do
+        if [ -f $dir/loaded${i} ]; then
+           ld=`cat $dir/loaded${i}`
+        else    
+           ld=0
+        fi
+        if [ $ld -eq $slot ]; then
+           echo "Drive ${i} Full (Storage element ${ld} loaded)"
+           exit 1
+        fi
+        i=`expr $i + 1`
+      done
+      # check if slot exists
+      if [ ! -f $dir/slot${slot} ] ; then
+        echo "source Element Address $slot is Empty"
+        exit 1
+      fi
       if [ -f $dir/loaded${drive} ]; then
         ld=`cat $dir/loaded${drive}`
       else
         ld=0
       fi
-      if [ $ld -eq 0 ]; then
-        echo "0" >$dir/loaded${drive}
-        unlink $device 2>/dev/null >/dev/null
-        rm -f $device
-        ln -s $dir/slot${slot} $device
-        rtn=$?
-        if [ $rtn -eq 0 ]; then
-           echo $slot >$dir/loaded${drive}
-        fi
-        exit $rtn
-      else
+      if [ $ld -ne 0 ]; then
         echo "Drive ${drive} Full (Storage element ${ld} loaded)"
         exit 1
       fi
+      echo "0" >$dir/loaded${drive}
+      unlink $device 2>/dev/null >/dev/null
+      rm -f $device
+      ln -s $dir/slot${slot} $device
+      rtn=$?
+      if [ $rtn -eq 0 ]; then
+        echo $slot >$dir/loaded${drive}
+      fi
+      exit $rtn
       ;;
 
    list)