Newsgroup: it.comp.os.linux.iniziare
Titolo: Bash script che non funziona

Salve a tutti!
Ho scritto uno script che mi monitora la connessione a internet e la
scollega quando meno di un certo numero di pacchetti sono stati
trasmessi dalla interfaccia ippp0 (ISDN) in un certo periodo di tempo
[mi capita infatti di ricevere pacchetti non richiesti dal mio ISP,
probabilmente destinati all'utente che aveva precedentemente
l'indirizzo IP che poi è stato assegnato a me. Questi pacchetti
resettano il timeout e la connessione non si chiude mai...).
Se lancio lo script da riga di comando, funziona.
Se invece lo faccio partire da /etc/ppp/ip-up, no.
Facendo un log dello script ho osservato che non viene letto il numero
di pacchetti dal comando ifconfig.
Credo ci sia un problema di shell (quella che esegue lo script non si
comporta come quella che uso io da terminale).
Qualcuno mi può illuminare?
Grazie,
Giuseppe
Segue lo script
#! /bin/bash
#hangup a connection if < than x packets were transmitted in y minutes
#thanks to my ISP...:-\
MAXPACKETS=$1
TIMERANGE=$2
TIME=1
RED="ippp0"
COUNTER=1
while [ $COUNTER -le $TIMERANGE ]; do
        PACKETS[$COUNTER]=`ifconfig $RED | grep "TX packets:" | cut -d
: -f 2 | cut -d \  -f 1`
        echo "Pacchetti($COUNTER)= " ${PACKETS[$COUNTER]}
        let COUNTER+=1
        echo "counter = $COUNTER"
        sleep 1m
done
while [ $TIME -ge 0 ]; do #endless cycle
        PACKETS_NOW=`ifconfig $RED | grep "TX packets:" | cut -d : -f
2 | cut -d
 \  -f 1`
        echo "PacchettiOra= $PACKETS_NOW"
        echo "Pacchetti($TIME)= " ${PACKETS[$TIME]}
        if [ $[$PACKETS_NOW-${PACKETS[$TIME]}] -lt $MAXPACKETS ]; then
                ******* > SCOLLEGARE
                echo "SCOLLEGATO!!!"
                exit
        else
                PACKETS[$TIME]=$PACKETS_NOW
                echo "Time= $TIME e Timerange= $TIMERANGE"
                sleep 1m
                if [ $TIME = $TIMERANGE ]; then
                echo "Sono uguali: setto Time a 1"
                        TIME=1
                else
                echo "Non sono uguali: aumento Time di 1"
                        let TIME+=1
                fi
        fi
done
====Fine script=======

 comporta come quella che uso io da terminale).
Io penso sia un problema di PATH. Specifica tutto il path quando 
richiami i comandi.
Davide

 Qualcuno mi può illuminare?
prova a dare il path completo di ifconfig (da me /sbin/ifconfig)
HTH
-- 
  .-----------------------.
  | Emiliano Grilli       |
  | 
emi...@libero.it
      |
  | Linux user #209089    |
  | 
http://www.emillo.net
 |
  '-----------------------'

 #! /bin/bash
Se non hai paura di un log enorme...
#!/bin/bash -x
Poi guardi la traccia.
Ciao,
-- 
       Roberto Divia`             Love at first sight is one of the greatest
       =============             labour-saving devices the world has ever seen.
Mailbox: C02110                 CERN-European Organization for Nuclear Research
E-mail: 
Robert...@cern.ch
           CH-1211 GENEVE 23, Switzerland

 prova a dare il path completo di ifconfig (da me /sbin/ifconfig)
Grazie Emilio e Davide: era proprio il path...
Spero che il tempo che ho perso ad arrovellarmi mi serva da formazione
per il futuro.
Grazie ancora,
Giuseppe

 resettano il timeout e la connessione non si chiude mai...).
Brodcast
Che versione di kernel stai usando, sembra un po` vecchiotta.
[ ... ]
prova ad eseguire: isdnctrl list ippp0
e vedi li valore di:    'Hangup-Timeout:'