problems with tape drive

Dana Holland dana.holland at navarrocollege.edu
Thu Feb 1 14:39:42 UTC 2007


Here is the result of the script:

[root at mail ~]# ./scan_scsi_bus.sh
Host adapter 0 (aic7xxx) found.
Host adapter 1 (aic7xxx) found.
0 new device(s) found.
0 device(s) removed.



David Tonhofer wrote:
> Dana Holland wrote:
>>
>>
>> This is what's showing in /proc/scsi/scsi - the device with Id: 06 
>> used to say Seagate DAT-72, so I've obviously changed something in my 
>> attempts to fix this.
>>
>>
> 
> You mean to say that there is no entry?
> 
> Try scanning the SCSI bus with this little script (just run it as 
> scan_scsi_bush.sh)
> 
> 
> 
> #!/bin/bash
> # Skript to rescan SCSI bus, using the
> # scsi add-single-device mechanism
> # (w) 98/03/19 Kurt Garloff <kurt at garloff.de> (c) GNU GPL
> 
> # Return hosts. /proc/scsi/HOSTADAPTER/? must exist
> findhosts ()
> {
>  hosts=
>  for name in /proc/scsi/*/?; do
>    name=${name#/proc/scsi/}
>    if test ! $name = scsi
>      then hosts="$hosts ${name#*/}"
>      echo "Host adapter ${name#*/} (${name%/*}) found."
>    fi
>  done
> }
> 
> # Test if SCSI device $host $channen $id $lun exists
> # Outputs description from /proc/scsi/scsi, returns new
> testexist ()
> {
>  grepstr="scsi$host Channel: 0$channel Id: 0*$id Lun: 0$lun"
>  new=`cat /proc/scsi/scsi|grep -e"$grepstr"`
>  if test ! -z "$new"
>    then cat /proc/scsi/scsi|grep -e"$grepstr"
>    cat /proc/scsi/scsi|grep -A2 -e"$grepstr"|tail -2|pr -o4 -l1
>  fi
> }
> 
> # Perform search (scan $host)
> dosearch ()
> {
>  for channel in $channelsearch; do
>    for id in $idsearch; do
>      for lun in $lunsearch; do
>        new=
>        devnr="$host $channel $id $lun"
>        echo "Scanning for device $devnr ..."
>        printf "OLD: "
>        testexist
>        if test ! -z "$remove" -a ! -z "$new"
>          then echo "scsi remove-single-device $devnr" >/proc/scsi/scsi
>          echo "scsi add-single-device $devnr" >/proc/scsi/scsi
>          printf "\r\x1b[A\x1b[A\x1b[AOLD: "
>          testexist
>          if test -z "$new"; then printf "\rDEL: \r\n\n\n\n"; let 
> rmvd+=1; fi
>        fi
>        if test -z "$new"
>          then printf "\rNEW: "
>          echo "scsi add-single-device $devnr" >/proc/scsi/scsi
>          testexist
>          if test -z "$new"; then printf "\r\x1b[A"; else let found+=1; fi
>        fi
>      done
>    done
>  done
> }
> 
> 
> # main
> if test @$1 = @--help -o @$1 = @-h
>  then
>    echo "Usage: scan_scsi_bus.sh [-l] [-w] [-c] [host [host ...]]"
>    echo " -l activates scanning for LUNs 0 .. 7 [default: 0]"
>    echo " -w enables scanning for device IDs 0 .. 15 [def.: 0 .. 7]"
>    echo " -r enables removing of devices        [default: disabled]"
>    echo " -c enables scanning of channels 0 1   [default: 0]"
>    echo " If hosts are given, only these are scanned [default: all]"
>    exit 0
> fi
> 
> # defaults
> lunsearch="0"
> idsearch="0 1 2 3 4 5 6 7"
> channelsearch="0"
> remove=""
> 
> # Scan options
> opt="$1"
> while test ! -z "$opt" -a -z "${opt##-*}"; do
>  opt=${opt#-}
>  case "$opt" in
>    l) lunsearch="0 1 2 3 4 5 6 7" ;;
>    w) idsearch="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" ;;
>    c) channelsearch="0 1" ;;
>    r) remove=1 ;;
>    *) echo "Unknown option -$opt !" ;;
>  esac
>  shift
>  opt="$1"
> done
> 
> # Hosts given ?
> if test @$1 = @; then findhosts; else hosts=$*; fi
> 
> declare -i found=0
> declare -i rmvd=0
> for host in $hosts; do dosearch; done
> echo "$found new device(s) found.               "
> echo "$rmvd device(s) removed.                 "
> 
> 
> 




More information about the redhat-list mailing list