Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Mar 2004 21:28:24 -0800
From:      Chris Pressey <cpressey@catseye.mine.nu>
To:        David.Bear@asu.edu
Cc:        freebsd-questions@freebsd.org
Subject:   Re: issue with simple script
Message-ID:  <20040315212824.4de201a5.cpressey@catseye.mine.nu>
In-Reply-To: <20040315222720.GF28684@asu.edu>
References:  <20040315222720.GF28684@asu.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 15 Mar 2004 15:27:20 -0700
David Bear <David.Bear@asu.edu> wrote:

> I thought I had a tape issue.. Now its clear I have a script issue.
> 
> Below is a script I use to perform level 0 dumps on all mounted file
> systems.  The problem seems to be that when the script runs, it does
> not run as root -- even though I am root when I run it. The goal is to
> cron it, but as I was testing it I ran into some problems.
> 
> First, I can't set the MT variable as its listed below. I get an
> permission denial on /dev/nrsa0. This makes no sense, since as root I
> can issue the command fine. Moreover, the dump command itself fails
> even thought it seems to be rendered syntactically correct.  I echo'ed
> all the generated commands just to make certain they are correct.

For future reference, you can achieve the same effect with the -x
switch.

i.e. add "-x" to the first line of the script, or run the script with

  sh -x l0dump.sh

> Here's the output of the script:
> 
> =====================================================
> ppsrvx# ./l0dump.sh
> ./l0dump.sh: /dev/nrsa0: permission denied
> comp off
> /sbin/dump -0u -a -b 64 -f /dev/nrsa0 /dev/ad0s1a
> /sbin/dump -0u -a -b 64 -f /dev/nrsa0 /dev/da1s1d
> /sbin/dump -0u -a -b 64 -f /dev/nrsa0 /dev/da0s1e
> /sbin/dump -0u -a -b 64 -f /dev/nrsa0 /dev/da1s1e
> /sbin/dump -0u -a -b 64 -f /dev/nrsa0 /dev/ad0s1d
> /sbin/dump -0u -a -b 64 -f /dev/nrsa0 /dev/da0s1d
> /sbin/dump -0u -a -b 64 -f /dev/nrsa0 /dev/ad0s1e
> /dev/sa0 offline
> 
> ======================================================
> 
> notice the permission denied..
> 
> not also 'comp off' which SHOULD be rendered as 
>    /usr/bin/mt -f /dev/nrsa0 comp off
> 
> but isn't.
> 
> I'm really stumped here. 
> 
> Is there some reason why running these commands in a script would
> fail, yet running them by hand works?  
> 
> ========================================================
> #!/bin/sh
> AWK=/usr/bin/awk
> DF=/bin/df
> DMP=/sbin/dump
> DEST=/dev/nrsa0
> MT="/usr/bin/mt -f " ${DEST}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

I think this line is your problem.  It's trying to set the variable MT
to "/usr/bin/mt -f ", then run the command ${DEST}.  Of course, ${DEST}
isn't a command, it's a device, which isn't executable, which is why you
get "permission denied."

I think that if you rewrite the line as the following, it'll do what you
want:

  MT="/usr/bin/mt -f ${DEST}"

-Chris



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040315212824.4de201a5.cpressey>