Vorige onderwerp :: Volgende onderwerp |
Auteur |
Bericht |
Henk2011
Geregistreerd op: 21 Mrt 2011 Berichten: 52
|
Geplaatst: Zo Jul 24, 2011 12:09 pm Onderwerp: waarom loopt dit vast en hoe kom ik eruit? |
|
|
Van I'net heb ik een proggramatje om onwillige scanners te bewerken.Tenminste wat ik denk dat het moet doen. Maar het loopt vast.
Daarom hier een kopie en de reden dat het vastloopt. Wie helpt me hieruit.
#!/bin/bash
# Skript to rescan SCSI bus, using the
# scsi add-single-device mechanism
-# (w) 1998-03-19 Kurt Garloff <kurt@xxxxxxxxxx> (c) GNU GPL
-# (w) 2003-07-16 Kurt Garloff <garloff@xxxxxxx> (c) GNU GPL
-# $Id: rescan-scsi-bus.sh,v 1.24 2006/07/29 12:34:11 garloff Exp $
+# (c) 1998--2008 Kurt Garloff <kurt@xxxxxxxxxx>, GNU GPL v2 or later
+# (c) 2006--2008 Hannes Reinecke, GNU GPL v2 or later
+# $Id: rescan-scsi-bus.sh,v 1.28 2008/09/12 18:28:02 garloff Exp $
setcolor ()
{
@@ -39,7 +39,8 @@
fi
hosts="$hosts $hostno"
echo "Host adapter $hostno ($hostname) found."
- done
+ done
+ hosts=`echo $hosts | sed 's/ /\n/g' | sort -n`
}
# Return hosts. /proc/scsi/HOSTADAPTER/? must exist
@@ -64,29 +65,6 @@
done
}
-printtype ()
-{
- local type=$1
-
- case "$type" in
- 0) echo "Direct-Access " ;;
- 1) echo "Sequential-Access" ;;
- 2) echo "Printer " ;;
- 3) echo "Processor " ;;
- 4) echo "WORM " ;;
- 5) echo "CD-ROM " ;;
- 6) echo "Scanner " ;;
- 7) echo "Optical Device " ;;
- echo "Medium Changer " ;;
- 9) echo "Communications " ;;
- 10) echo "Unknown " ;;
- 11) echo "Unknown " ;;
- 12) echo "RAID " ;;
- 13) echo "Enclosure " ;;
- 14) echo "Direct-Access-RBC" ;;
- *) echo "Unknown " ;;
- esac
-}
# Get /proc/scsi/scsi info for device $host:$channel:$id:$lun
# Optional parameter: Number of lines after first (default = 2),
# result in SCSISTR, return code 1 means empty.
@@ -111,7 +89,24 @@
if [ "$LN" -gt 1 ] ; then
ILVL=$(cat ${SCSIPATH}/device/scsi_level)
type=$(cat ${SCSIPATH}/device/type)
- ITYPE=$(printtype $type)
+ case "$type" in
+ 0) ITYPE="Direct-Access " ;;
+ 1) ITYPE="Sequential-Access" ;;
+ 2) ITYPE="Printer " ;;
+ 3) ITYPE="Processor " ;;
+ 4) ITYPE="WORM " ;;
+ 5) ITYPE="CD-ROM " ;;
+ 6) ITYPE="Scanner " ;;
+ 7) ITYPE="Optical Device " ;;
+ ITYPE="Medium Changer " ;;
+ 9) ITYPE="Communications " ;;
+ 10) ITYPE="Unknown " ;;
+ 11) ITYPE="Unknown " ;;
+ 12) ITYPE="RAID " ;;
+ 13) ITYPE="Enclosure " ;;
+ 14) ITYPE="Direct-Access-RBC" ;;
+ *) ITYPE="Unknown " ;;
+ esac
SCSITMP=$(printf ' Type: %-16s ANSI SCSI
revision: %02d' "$ITYPE" "$((ILVL - 1))")
SCSISTR="$SCSISTR
$SCSITMP"
@@ -200,18 +195,17 @@
return 1
fi
- TYPE=$(printtype $IPTYPE)
procscsiscsi
TMPSTR=`echo "$SCSISTR" | grep 'Vendor:'`
if [ "$TMPSTR" != "$STR" ]; then
- echo -e "\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nfrom:${SCSISTR#* }
\nto: $STR ${norm}\n\n\n"
- return 0
+ echo -e "\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nfrom:${TMPSTR#* }
\nto: $STR ${norm}\n\n\n"
+ return 1
fi
TMPSTR=`echo "$SCSISTR" | sed -n 's/.*Type: *\(.*\) *ANSI.*/\1/p'`
if [ $TMPSTR != $TYPE ] ; then
- echo -e "\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nfrom:${TMPSTR}
\nto: $TYPE ${norm}\n\n\n"
- return 0
- fi
+ echo -e "\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nfrom:${TMPSTR}
\nto: $TYPE ${norm}\n\n\n"
+ return 1
+ fi
return $RC
}
@@ -297,18 +291,17 @@
# Device exists: Test whether it's still online
# (testonline returns 1 if it's gone or has changed)
testonline
- RC=$?
- if test $RC = 1 -o ! -z "$forceremove"; then
+ if test $? = 1 -o ! -z "$forceremove"; then
echo -en "\r\e[A\e[A\e[A${red}REM: "
echo "$SCSISTR" | head -n1
echo -e "${norm}\e[B\e[B"
if test -e
/sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device; then
echo 1 >
/sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device/delete
- # Try readding, should fail if device is gone
+ # Try reading, should fail if device is gone
echo "$channel $id $lun" > /sys/class/scsi_host/host${host}/scan
else
echo "scsi remove-single-device $devnr" > /proc/scsi/scsi
- # Try readding, should fail if device is gone
+ # Try reading, should fail if device is gone
echo "scsi add-single-device $devnr" > /proc/scsi/scsi
fi
fi
@@ -317,6 +310,7 @@
echo 1 >
/sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device/rescan
fi
fi
+
printf "\r\x1b[A\x1b[A\x1b[A${yellow}OLD: $norm"
testexist
if test -z "$SCSISTR"; then
@@ -380,7 +374,10 @@
oldsearch="$lunsearch"
for tmplun in $lunsearch; do
if test $tmplun -eq $lun ; then
- dolunscan
+ # Optimization: don't scan lun 0 again
+ if [ $lun -ne 0 ]; then
+ dolunscan
+ fi
else
newsearch="$newsearch $tmplun"
fi
@@ -408,7 +405,7 @@
idlist
fi
for id in $idsearch; do
- if test -z "$lunsearch" ; then
+ if test -z "$lunsearch"; then
doreportlun
else
for lun in $lunsearch; do
@@ -486,7 +483,7 @@
unsetcolor
lunsearch=""
idsearch=`seq 0 7`
-channelsearch=""
+channelsearch="0"
remove=
forceremove=
optscan=1
resultaat bij mij:
henk@linux-z2sx:~/bin> scannertest
/home/henk/bin/scannertest: regel 5: syntaxfout nabij onverwacht symbool 'w'
/home/henk/bin/scannertest: regel 5: `-# (w) 1998-03-19 Kurt Garloff <kurt@xxxxxxxxxx> (c) GNU GPL'
henk@linux-z2sx:~/bin> |
|
Terug naar boven |
|
 |
Rinse Crewlid
Geregistreerd op: 09 Feb 2005 Berichten: 6900 Woonplaats: bolsward
|
Geplaatst: Ma Jul 25, 2011 9:12 pm Onderwerp: |
|
|
volgens mij heb je geen programmaatje gedownload, maar een diff-bestand dat de verschillen laat zien tussen 2 versies van dat programmaatje.
bijv. de regels waar het bij jou op vast loopt:
Code: |
-# (w) 1998-03-19 Kurt Garloff <kurt@xxxxxxxxxx> (c) GNU GPL
-# (w) 2003-07-16 Kurt Garloff <garloff@xxxxxxx> (c) GNU GPL
-# $Id: rescan-scsi-bus.sh,v 1.24 2006/07/29 12:34:11 garloff Exp $
+# (c) 1998--2008 Kurt Garloff <kurt@xxxxxxxxxx>, GNU GPL v2 or later
+# (c) 2006--2008 Hannes Reinecke, GNU GPL v2 or later
+# $Id: rescan-scsi-bus.sh,v 1.28 2008/09/12 18:28:02 garloff Exp $
|
merk op dat de eerste 3 regels voorafgegaan worden door een min-teken, en de laatste 3 regels door een plusteken.
Dat houdt volgens mij in dat die laatste 3 regels de eerste 3 moeten vervangen.
Bijv in beide laatste regels zie je dat het programma in versie omhoog is gegaan van 1.24 uit 2006 naar 1.28 uit 2008,.
Kijk eens op de website waar je dit bestand vandaan hebt of je daar het originele script kunt terugvinden. _________________ Help mee om KDE 4.7 in het Nederlands of Fries te vertalen!! |
|
Terug naar boven |
|
 |
|
|
Je mag geen nieuwe onderwerpen plaatsen in dit subforum Je mag geen reacties plaatsen in dit subforum Je mag je berichten niet bewerken in dit subforum Je mag je berichten niet verwijderen in dit subforum Je mag niet stemmen in polls in dit subforum
|
|