Newsgroup: it.comp.os.linux.sys
Titolo: Problema di hylafax o del sistema?. Esperti di bash shell

Ho un problema durante la configurazione di Hylafax.
Non č un problema bloccante ma vorrei capire perchč succede.
Quando lancio faxaddmodem mi entra in loop in questo modo
[...]
Probing for best speed to talk to modem:
 38400
 OK.
/usr/sbin/faxaddmodem: line 896: 0: command not found
Hmm, something seems to be hung, check your modem eh?
Hmm, something seems to be hung, check your modem eh?
/usr/sbin/faxaddmodem: line 896: 0: command not found
Hmm, something seems to be hung, check your modem eh?
Hmm, something seems to be hung, check your modem eh?
Hmm, something seems to be hung, check your modem eh?
[...]
Per tutti quelli che hanno lasciato la sfera di cristallo a far riparare,
riporto i dati che penso siano utili a risolvere (si, lo so viene un
post chilometrico e probabilmento ho tralasciato qualcosa di essenziale)
In primo luogo ho notato che č possibile uscire dal loop e proseguire
correttamente (CREDO perchč poi arriva alla fina e sembra abbia fatto
tutto)
Per sbloccarlo, faccio un ps aux |grep faxadd  e trovo 2 istanze di
faxaddmodem. Uccido la SECONDA istanza con kill -9 pidsecondaistanza e il
programma esce dal loop
per aiutarvi lancio la shell in debug
/bin/bash -x faxaddmodem ttyS1
+ RESULT=
+ '[' -z '' ']'
+ trap 0 1 2 15
+ true
+ sleep 10
+ nagpid=11969
+ trap '/bin/rm -f $JUNK; /bin/rm -f -r /tmp/.faxaddmodem11896; kill 11969 $catpid; exit 1' 0 1 2 15
+ SendToModem 'AT+FCLASS=?'
+ COMMAND='AT+FCLASS=?'
+ sleep 1
+ case $TARGET in
+ onDev -c '/bin/stty clocal && exec /bin/cat -u /dev/ttyS1'
+ '[' -c = -c ']'
+ shift
++ /usr/sbin/ondelay /dev/ttyS1 /bin/bash -c '/bin/stty clocal && exec /bin/cat -u /dev/ttyS1 >/tmp/.faxaddmodem11896/addmodem11896'
++ echo 11973
+ catpid=11973
+ sleep 2
+ onDev /bin/stty -echo -icrnl -ixon -ixoff -isig eof '"^A"' clocal 38400
+ '[' /bin/stty = -c ']'
+ /usr/sbin/ondelay /dev/ttyS1 /bin/bash -c '/bin/stty -echo -icrnl -ixon -ixoff -isig eof "^A" clocal 38400'
+ sleep 1
+ printf '\r'
+ sleep 1
+ printf 'ATQ0V1E1\r'
+ sleep 1
+ for i in '$COMMAND'
+ printf 'AT+FCLASS=?\r'
+ sleep 1
+ kill -9 11973
+ catpid=
++ echo 'AT+FCLASS=?'
++ /bin/sed -e 's/[*&\\$]/\\&/g'
+ pat='AT+FCLASS=?'
++ tr -ds '\015' '\012'
++ /bin/sed -n '/AT+FCLASS=?/{n;s/ *$//;p;q;}'
++ /bin/sed 's/+F.*=//'
+ RESPONSE=0,1,2.0
+ exec
++ 0
/usr/sbin/faxaddmodem: line 896: 0: command not found
+ echo ''
## BEGIN LOOP
+ echo 'Hmm, something seems to be hung, check your modem eh?'
Hmm, something seems to be hung, check your modem eh?
+ true
+ sleep 10
+ echo ''
## END LOOP
##
## QUI UCCIDO IL SECONDO PROCESSO ED ESCE DALL LOOP
##
+ trap '/bin/rm -f $JUNK; /bin/rm -f -r /tmp/.faxaddmodem11896; test "$catpid" && kill $catpid; exit 1' 0 1 2 15
+ sleep 1
++ tr -ds '\015' '\012'
++ /bin/sed -n '$p'
+ RESULT=OK
+ '[' -z 0,1,2.0 ']'
+ '[' -z OK ']'
+ ModemType=
+ Manufacturer=
+ Model=
+ ProtoType=skel
+ FlowControl=default
+ case $TARGET in
+ echo ''
##
## [...MEGACUT]
##
+ echo This modem looks to have support for Class 1 and 2.0.
This modem looks to have support for Class 1 and 2.0.
+ prompt 'How should it be configured [1]?'
+ echo -n 'How should it be configured [1]? '
How should it be configured [1]? + read x
Qui seleziono classe 2.0 e proseguo fino alla fine senza ulteriori intoppi
## DI SEGUITO IL PEZZO DI CODICE INCRIMINATO DEL LOOP
while [ -z "$RESULT" ]; do
    #
    # This goes in the background while we try to
    # reset the modem.  If something goes wrong, it'll
    # nag the user to check on the problem.
    #
    (trap 0 1 2 15;
     while true; do
	sleep 10;
	echo ""
	echo "Hmm, something seems to be hung, check your modem eh?"
     done)& nagpid=$!
    trap "$RMCMD \$JUNK; $RMCMD -r $TMPDIR; kill $nagpid \$catpid; exit 1" 0 1 2 15
    SendToModem "AT+FCLASS=?" 			# ask for class support
    exec 3>&2 2> /dev/null  # Mute stderr against child death
    kill $nagpid
    wait $nagpid            # Really waits its end
    exec 2>&3 3>&-          # Restore stderr
    trap "$RMCMD \$JUNK; $RMCMD -r $TMPDIR; test \"\$catpid\" && kill \$catpid; exit 1" 0 1 2 15
    sleep 1
    RESULT=`tr -ds '\015' '\012' < $OUT | $SED -n '$p'`
    if [ -z "$RESPONSE" ]; then
	echo ""
	echo "There was no response from the modem.  Perhaps the modem is"
	echo "turned off or the cable between the modem and host is not"
	echo "connected.  Please check the modem and hit a carriage return"
	prompt "when you are ready to try again:"
	read x
    fi
done
## RIPORTO ANCHE LE VARIABILI INTERESSANTI (ho messo qualche echo in giro)
## NOTA il valore di nagpid contiene il pid del processo da killare
##      (Attenzion 12377 questo numero non ha nulla a che fare con il debug
##       riportato in precedenza. Si tratta di un altro giro) 
PRIMA DEL LOOP
RMCMD = /bin/rm -f
JUNK = /tmp/.faxaddmodem12304/addmodem12304 /var/lock/LCK..ttyS1 /tmp/.faxaddmodem12304/faxpr12304
TMPDIR = /tmp/.faxaddmodem12304
nagpid =
catpid =
DOPO IL LOOP
RMCMD = /bin/rm -f
JUNK = /tmp/.faxaddmodem12304/addmodem12304 /var/lock/LCK..ttyS1 /tmp/.faxaddmodem12304/faxpr12304
TMPDIR = /tmp/.faxaddmodem12304
nagpid = 12377
catpid =
/usr/sbin/faxaddmodem: line 921: 0: command not found
DENTRO ALL LOOP
RMCMD = /bin/rm -f
JUNK = /tmp/.faxaddmodem12304/addmodem12304 /var/lock/LCK..ttyS1 /tmp/.faxaddmodem12304/faxpr12304
TMPDIR = /tmp/.faxaddmodem12304
nagpid =
catpid =
# Dopo il Kill mi ritroco con:
RESULT = OK
RESPONSE = 0,1,2.0
Il mio sistema
 
 bash --version
 GNU bash, version 3.00.0(1)-release (i686-pc-linux-gnu)
 Copyright (C) 2004 Free Software Foundation, Inc.
 
 uname -r
 2.6.7-gentoo-r11
 (credo che non centri nulla col problema) ad ogni modo Il modem č un USrobotics Sportster messageplus 
 compatibile classe 2.0 Provato da terminale con at+fclass=?. Ho provato anche con il nokia6600
 (in blutooth, anche per lui verificato da terminale compatibile classe 2.0)
 ma mi da lo stesso problema

 Non è un problema bloccante ma vorrei capire perchè succede.
E' successo anche a me qualche giorno va quando ho installato Hylafax,
sempre con bash 3.0 (non mi ricordo se "liscia" oppure la -r1 di Gentoo).
Io ho risolto brutalmente cancellando dallo script la parte che andava in
loop ed il modem è stato riconosciuto e tutto funziona.
Avevo fatto qualche indagine per tentare di scoprire se il problema è di
Hylafax o di bash, ma non ho concluso molto avendo risolto con la soluzione
brutale.
Credo però che l'istruzione che crei il problemi sia il trap 0, o almeno io
scommetterei su questa :)
Lascio la parola agli esperti.
Saluti
Teo

 loop ed il modem è stato riconosciuto e tutto funziona.
Aspetto un giorno per vedere se con qualche suggerimento riesco a capire
meglio di cosa si tratta poi lo segnalo comunque su bugzilla.
Al momento però sono fermo su un problema più grave che non
riesco a superare. (spiegato su un altro post di hylafax)