linux user group brescia

immagine del castello

Archivio della mailing list

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