your mail
andrea gelmini
andrea.gelmini a lugbs.linux.it
Gio 26 Set 2002 14:28:11 UTC
On gio, set 26, 2002 at 03:37:41 +0200, miky72 a tin.it wrote:
> Ti invio lo script fatto così forse ti sarà più chiaro il
> problema.Questo script deve diventare un demone che ogni tot tempo
> controlla se sono arrivati nuovi fax,in caso affermativo deve
> rinominarli nel formato desiderato senza toccare quelli già rinominati.
questo lo fai via cron... potresti lanciare in background lo script, ma ti
levi tutta una serie di preoccupazioni, e risulta piu` elegante, farlo fare
a cron.
> Così com'è lo script funziona bene perchè i fax in arrivo su Hylafax
> si chiamano fax00001 etc.Ma cosa succederà quando si arriverà al
> fax20001 e così via?
giusto per vedere se ho capito il problema, ti butto giu` dello
pseudo codice per mostrarti come risolverei io la cosa.
- leggo il file temporaneo con la numerazione attuale
- con find lancio un ciclo su tutti i file che sono piu` recenti del
file di riferimento (vedi poi)
- mv del file di hylafax
- esco dal ciclo, aggiorno il file con la numerazione, lancio il touch del
file di riferimento
alcune note sparse:
a) ti affidi non al parsing del nome file, ma alla data di creazione del
file per decidere se lo hai gia` spostato o meno;
b) vanno inseriti una serie di controlli per evitare casini nel caso di
crash/errori/ecc;
c) in questo senso e` bene definire sempre il percorso assoluto dei
programmi che lanci;
d) l'aggiornamento del file con la numerazione conviene farlo dopo ogni
spostamento, in modo tale che in caso di crash non ti ritrovi
sovrascritture;
e) ancora meglio, sarebbe, sfruttare il numero di secondi piuttosto che una
variabile tua, se la necessita` e` semplicemente di averli nell'esatto
ordine cronologico, quando fai:
[...]fax$data-$n.tif
in modo tale da levarti dalle scatole la gestione della numerazione.
f) noto solo ora che il punto d) e` gia` soddisfatto dal tuo script;
g) l'unica tua preoccupazione e` avere data e ora settati in modo civile
sulla macchina... la soluzione e` banale, nel senso che tutti i router,
almeno i cisco, esportano di default il servizio per rdate. come altra via
puoi appoggiarti ad un server apposito, utilizzando qualcosa come "rdate -s
time.ien.it", ogni qualche ora.
h) questo note sono invero piuttosto confuse, ma sto scrivendo di fretta
senza rileggere... sicche`...
ciao,
andrea
>
>
> #!/bin/csh
>
> #Questo script rinomina i file che iniziano con
> # la parola "fax", all'interno della directory selezionata
>
> #Setta la variabile data con la data del sistema nel formato
> #annomesegiorno
>
> set data=`date '+%Y%m%d'`
>
>
> #Inizio del ciclo
>
> while (1)
>
> #Setta la variabile lista con tutti i file che iniziano con fax
>
> set lista = (`ls /var/spool/hylafax/recvq/ | grep fax0`)
>
> #Setta la variabile n con il valore contenuto nel file tmp
> #Setta la variabile count con il numero di file presenti nella lista
>
> set count = `ls /var/spool/hylafax/recvq/ | grep fax |wc -w`
> if !($count == 0) then
> echo "ci sono $count fax"
>
> set n = `cat tmp`
>
> #Il ciclo che riconosce i file e li rinomina e li sposta
>
> foreach i ($lista)
>
> echo $i;
>
> mv /var/spool/hylafax/recvq/$i
> /var/spool/hylafax/recvq/fax$data-$n.tif
> @ n++
>
> #Memorizza il valore di n nel file tmp
>
>
> echo $n > tmp
>
> end
>
> sleep 60
> endif
> end
>
>
--
Lei si e' spiegato benissimo. Solo che chiunque Le risponda ricade a
mio giudizio in quella categoria di tontoloni, che non riuscirebbero
a svuotare l'acqua da uno stivale neanche scrivendogli le istruzioni
sotto il tacco.
-- Leonardo Serni
Maggiori informazioni sulla lista
Lug
|