AllesLinux Forumindex AllesLinux
Het forum van AllesLinux.com.
Deze site wordt gehost door Exonet Internet Services
 
 FAQFAQ   ZoekenZoeken   GebruikerslijstGebruikerslijst   GebruikersgroepenGebruikersgroepen   RegistrerenRegistreren 
 ProfielProfiel   Log in om je privéberichten te bekijkenLog in om je privéberichten te bekijken   InloggenInloggen 

waarom loopt dit vast en hoe kom ik eruit?

 
Nieuw onderwerp plaatsen   Reageren    AllesLinux Forumindex -> Programmeren en Scripten
Vorige onderwerp :: Volgende onderwerp  
Auteur Bericht
Henk2011



Geregistreerd op: 21 Mrt 2011
Berichten: 52

BerichtGeplaatst: Zo Jul 24, 2011 12:09 pm    Onderwerp: waarom loopt dit vast en hoe kom ik eruit? Reageren met citaat

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 " ;;
- Cool 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 " ;;
+ Cool 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
Profiel bekijken Stuur privébericht
Rinse
Crewlid


Geregistreerd op: 09 Feb 2005
Berichten: 6900
Woonplaats: bolsward

BerichtGeplaatst: Ma Jul 25, 2011 9:12 pm    Onderwerp: Reageren met citaat

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
Profiel bekijken Stuur privébericht Website bekijken MSN Messenger
Berichten van afgelopen:   
Nieuw onderwerp plaatsen   Reageren    AllesLinux Forumindex -> Programmeren en Scripten Tijden zijn in GMT + 2 uur
Pagina 1 van 1

 
Ga naar:  
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


Powered by phpBB © 2001, 2005 phpBB Group
Vertaling door Lennart Goosens.