Philippe Troin zei:
> severity 297527 wishlist
> thanks

Hello Philippe,

> Jules Alberts <[EMAIL PROTECTED]> writes:
>
>> `mt-st status` returns text like this:
>>
>> ---snippet----------------------------------------
>> SCSI 2 tape drive:
>> File number=0, block number=0, partition=0.
>> Tape block size 0 bytes. Density code 0x47 (TR-5).
>> Soft error count since last status=0
>> General status bits on (41010000):
>>  BOT ONLINE IM_REP_EN
>> ---end snippet------------------------------------
>>
>> and the errorlevel is 0 regardless of the actual tape drive
>> status.
>
> I assume you mean "exit status".

Of course :)

>> If you want a shell script to check the status of the tape, it has
>> do do a grep on the output, which is errorprone, especially if the
>> author of mt-st would change the returned text in a future
>> version. The use of an errorlevel (e.g. 0 if tape is online, 1 if
>> offline etc.) would solve this.
>
> man mt-st says:
>
>        mt  exits with a status of 0 if the operation succeeded, 1
>        if the operation or device name given was invalid, or 2 if
>        the operation failed.
>
> 'mt-st status' performs according to the documentation: it exits
> with
> an exit status of 0 because it successfully retrieved the tape drive
> status information.  Therefore it's not an important bug, and I've
> downgraded your bug's severity to 'wishlist'.

OK.

> I do not think that returning a special exit status for the absence
> of
> the ONLINE flag is a good idea.  Tape drives some in different makes
> and they do not all report "tape inserted" as "ONLINE" and "tape
> ejected" as "! ONLINE".  My Sony DDS drive reports ejected as
> "! ONLINE && DR_OPEN" and inserted as "ONLINE && ! DR_OPEN".  I have
> seen some other drives not reporting DR_OPEN.  So it's not clear cut
> how inserted is defined.  The current behavior is at least
> consistent.
>
> As for your application of detecting an open tape drive I'd suggest
> sed'ing and grep'ing like this:
>
>    LC_ALL=C mt stat 2> /dev/null \
>    | sed -e '1,/^General status bits/d' \
>          -e '/^[^[:space:]]/,$d' \
>    | grep -q '[[:space:]]ONLINE\([[:space:]]\|$\)'
>    if [ $? -eq 0 ]
>    then
>      echo "Tape inserted"
>    fi
>
> (tested to work against mt-st and mt-gnu, BTW)
> That should isolate you as much as possible from change in the mt-st
> output format.
>
> Alternately, just open the tape for reading.  It will fail unless a
> tape is inserted:
>
>    (true < $TAPE ) >& /dev/null && echo "Tape inserted"

That's is a good one, elegant and effective. Thanks!

> Hope this helps,
> Phil.

Yes, it does. Thanks again.

Groeten,

-- 
Jules Alberts
ARBOdienst Limburg BV



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to