Thanks to those who offered help...
I have my L20 working on a Solaris 8 box with amanda 2.4.2p2.
I made a silly mistake. I forgot to remove the -x flag from "#!/bin/sh"
after debugging chg-zd-mtx. This was sending the first line of the
script, MT=/usr/bin/mt, to amlabel and amcheck.
There were only two changes that I needed to make in chg-zd-mtx. First,
for Solaris, I need /usr/ucb in PATH before /usr/bin. Otherwise "tr"
does not work as expected. Secondly, I needed a small change in sed
since I have bar code capability, but am not using it. The ".*" I added
near the end just gets rid of the "VolumeTag =" verbiage at the end of
the string. This patch should still work with non bar-code-enabled
libraries, but I have not tested it.
There is one other patch I suggest be incorporated into the CVS.
chg-zd-mtx does not skip comment lines in the <changerfile>. In fact,
it appends current values and commented out values to the variable
causing problems. I saw a posting from John R. Jackson on 4/6/01 saying
'How about we do this "the shell way" and get rid of grep and awk
altogether?' Sorry John, but I propose adding more awk to the script. :)
For those who asked what my configs look like, I'll include the
specifics below.
Patch 1: fix PATH for Solaris & fix sed for bar code enabled, but not used
***** start of diff, this line should be cut *****
*** chg-zd-mtx.orig Thu Oct 18 12:32:42 2001
--- chg-zd-mtx Thu Oct 18 12:32:35 2001
***************
*** 73,79 ****
libexecdir=${exec_prefix}/libexec
# try to hit all the possibilities here
! PATH=$sbindir:$libexecdir:/usr/bin:/bin:/usr/sbin:/sbin:/usr/ucb:/usr/local/bin
export PATH
USE_VERSION_SUFFIXES="no"
--- 73,79 ----
libexecdir=${exec_prefix}/libexec
# try to hit all the possibilities here
! PATH=$sbindir:$libexecdir:/usr/ucb/:/usr/bin:/usr/sbin:/sbin:/usr/local/bin
export PATH
USE_VERSION_SUFFIXES="no"
***************
*** 145,151 ****
sed -n "s/Data Transfer Element $drivenum:Empty/-1/p;s/Data
Transfer Element $drivenum:Full (Storage Element \([1-9][0-9]*\) Loaded):VolumeTag =
\(.*\)/\2/p"`
else
usedslot=`$MTX status |
! sed -n "s/Data Transfer Element:Empty/-1/p;s/Data Transfer
Element:Full (Storage Element \([1-9][0-9]*\) Loaded)/\1/p;s/Data Transfer Element
$drivenum:Empty/-1/p;s/Data Transfer Element $drivenum:Full (Storage Element
\([1-9][0-9]*\) Loaded)/\1/p"`
fi
if [ "$usedslot" -eq "-1" ]; then
--- 145,151 ----
sed -n "s/Data Transfer Element $drivenum:Empty/-1/p;s/Data
Transfer Element $drivenum:Full (Storage Element \([1-9][0-9]*\) Loaded):VolumeTag =
\(.*\)/\2/p"`
else
usedslot=`$MTX status |
! sed -n "s/Data Transfer Element:Empty/-1/p;s/Data Transfer
Element:Full (Storage Element \([1-9][0-9]*\) Loaded)/\1/p;s/Data Transfer Element
$drivenum:Empty/-1/p;s/Data Transfer Element $drivenum:Full (Storage Element
\([1-9][0-9]*\) Loaded).*/\1/p"`
fi
if [ "$usedslot" -eq "-1" ]; then
***** end of diff, this line should be cut *****
Patch 2: fix chg-zd-mtx to skip comment lines in <changerfile>
***** start of diff, this line should be cut *****
*** chg-zd-mtx.orig Thu Oct 18 12:32:42 2001
--- chg-zd-mtx Thu Oct 18 12:32:35 2001
***************
*** 120,133 ****
#### Dig out of the config file what is needed
! firstslot=`cat $configfile | sed -n "s/firstslot=\([1-9][0-9]*\)\(.*\)/\1/p"`
! lastslot=`cat $configfile | sed -n "s/lastslot=\([1-9][0-9]*\)\(.*\)/\1/p"`
! cleanslot=`cat $configfile | sed -n "s/cleanslot=\([1-9][0-9]*\)\(.*\)/\1/p"`
! OFFLINE_BEFORE_UNLOAD=`cat $configfile | sed -n
"s/OFFLINE_BEFORE_UNLOAD=\([0-9]\)\(.*\)/\1/p"`
! AUTOCLEAN=`cat $configfile | sed -n "s/AUTOCLEAN=\([0-9]\)\(.*\)/\1/p"`
! autocleancount=`cat $configfile | sed -n "s/autocleancount=\([0-9]\)\(.*\)/\1/p"`
! havereader=`cat $configfile | sed -n "s/havereader=\([0-9]\)\(.*\)/\1/p"`
! offlinestatus=`cat $configfile | sed -n "s/offlinestatus=\([0-9]\)\(.*\)/\1/p"`
# Routines start here
--- 120,133 ----
#### Dig out of the config file what is needed
! firstslot=`awk -F# '{print $1}' $configfile | sed -n
"s/firstslot=\([1-9][0-9]*\)\(.*\)/\1/p"`
! lastslot=`awk -F# '{print $1}' $configfile | sed -n
"s/lastslot=\([1-9][0-9]*\)\(.*\)/\1/p"`
! cleanslot=`awk -F# '{print $1}' $configfile | sed -n
"s/cleanslot=\([1-9][0-9]*\)\(.*\)/\1/p"`
! OFFLINE_BEFORE_UNLOAD=`awk -F# '{print $1}' $configfile | sed -n
"s/OFFLINE_BEFORE_UNLOAD=\([0-9]\)\(.*\)/\1/p"`
! AUTOCLEAN=`awk -F# '{print $1}' $configfile | sed -n
"s/AUTOCLEAN=\([0-9]\)\(.*\)/\1/p"`
! autocleancount=`awk -F# '{print $1}' $configfile | sed -n
"s/autocleancount=\([0-9]\)\(.*\)/\1/p"`
! havereader=`awk -F# '{print $1}' $configfile | sed -n
"s/havereader=\([0-9]\)\(.*\)/\1/p"`
! offlinestatus=`awk -F# '{print $1}' $configfile | sed -n
"s/offlinestatus=\([0-9]\)\(.*\)/\1/p"`
# Routines start here
**** end of diff, this line should be cut ****
WARNING:
I use non-standard paths for amanda. You will need to customize the
paths for your install.
Specifics for amanda.conf:
runtapes 1 # number of tapes to be used in a single run of amdump
tpchanger "chg-zd-mtx" # the tape-changer glue script
tapedev "/dev/rmt/0hn" # the no-rewind tape device to be used
rawtapedev "/dev/null" # the raw device to be used (ftape only)
changerfile "/usr/local/amanda/config/off-site/chg-scsi"
changerdev "/dev/scsi/changer/c3t0d0"
chg-scsi.conf in its entirety:
firstslot=1 #### 1st tape slot
lastslot=19 #### Last tape slot
cleanslot=20 #### Slot with cleaner tape
#
# # Do you want to clean the drive after a certain number of accesses?
# # NOTE - This is unreliable, since 'accesses' aren't 'uses', and we
# # have no reliable way to count this. A single amcheck could
# # generate as many accesses as slots you have, plus 1.
# # ALSO NOTE - many modern tape loaders handle this automatically.
#
AUTOCLEAN=0 #### Set to '1' or greater to enable
#
autocleancount=99 #### Number of access before a clean.
#
havereader=0 #### If you have a barcode reader, set to 1.
#
offlinestatus=0 #### Set to 0 if 'mt status' gives an
# #### "offline" when drive is offline.
# #### Set to 1 or greater if 'mt status'
# #### doesn't give and offline, rather an
# #### "ONLINE" when drive is online.
#
OFFLINE_BEFORE_UNLOAD=0 #### Does your tape driver require a
# #### 'mt offline' before mtx unload?
####
--donnie
> From: Donnie Emeson <[EMAIL PROTECTED]>
> Subject: changer problem
> To: [EMAIL PROTECTED]
> Date: Wed, 17 Oct 2001 22:16:42 -0600 (MDT)
>
> I'm having trouble with amanda 2.4.2p2 and a new changer, a Sun L20 with
> 20 slots and one DLT8000.
>
> This changer has a barcode reader, but I'm not using it. (I don't have
> a label maker and don't really want to bother.) Perhaps this is what's
> causing my problems...
>
> I have chg-zd-mtx working, though I had to make some minor changes.
>
> The problem is amlabel and amcheck. Both get similar errors. Amlabel
> goes ahead and loads the first tape and then gives me:
> amlabel: could not load slot "current": badly formed result from changer:
>"MT=/usr/bin/mt"
>
> Amcheck is fine except for this error:
> amcheck-server: could not get changer info: badly formed result from changer:
>"MT=/usr/bin/mt"
>
>
> # cat /tmp/amanda/amlabel.20011017213837.debug
> amlabel: debug 1 pid 27110 ruid 43382 euid 43382 start time Wed Oct 17 21:38:37 2001
> changer: got exit: 0 str: MT=/usr/bin/mt
> could not load slot "current": badly formed result from changer: "MT=/usr/bin/mt"
> amlabel: pid 27110 finish time Wed Oct 17 21:40:07 2001
>
>
> # cat /tmp/amanda/amcheck.20011017213225.debug
> amcheck: debug 1 pid 27006 ruid 43382 euid 0 start time Wed Oct 17 21:32:25 2001
> amcheck: dgram_bind: socket bound to 0.0.0.0.711
> changer: got exit: 0 str: MT=/usr/bin/mt
> changer_query: changer return was
> could not get changer info: badly formed result from changer: "MT=/usr/bin/mt"
> amcheck-server: pid 27007 finish time Wed Oct 17 21:32:25 2001
> amcheck: pid 27006 finish time Wed Oct 17 21:32:25 2001
>
> --donnie