Newsgroup: it.comp.os.linux.software
Titolo: Fetchnews in crontab controllato da ip-up?

Mi sta ronzando per la testa quest'idea.
Sono riuscito a mettere procmail per *tutti* gli utenti che ho sul sistema
in daemon mode, cosicché ogni 3 minuti il sistema fa "un giro" per le
caselle postali di tutti e scarica la posta a tutti :-)
Preso da raptus di automazione, volevo fare la stessa cosa con le news.
Uso leafnode.
Solo che ho guardato il man di fetchnews e non prevede un daemon mode.
Allora mi sono detto: pazienza, lo metto in crontab. Sorge perņ un altro
problema, se lo metto in crontab, dopo il controllo viene attivato
indipendentemente dal fatto che sia connesso o meno...
Bisogna discriminare da ip-up... ma come?
Qualcuno ha qualche idea?
Grazie.
-- 
Crononauta
==========
ICQ UIN: 4005815
IDAnet: 
http://adcserver1.biodip.unimi.it/ida/index.htm
GP Legends: 
http://www.multiplayer.it/driving/

Bisogna discriminare da ip-up... ma come?
In ip-up puoi comunque metterci una chiamata, cosi' se anche stai in
linea meno del delay di crontab, le news le scarichi lo stesso, in cron
metti uno script come questo:
--------------
PIDS=`pidof pppd`
# test if pppd is running.
if test "$PIDS"; then
    su news -c "/usr/sbin/fetchnews" &
fi
---------------
Ciao.roberto
-- 
Ciao     |Save our planet!
         |Save wildlife;
 roberto |For your E-MAIL use only recycled Bytes !!
         |roberto poggi  
rpo...@softhome.net

 indipendentemente dal fatto che sia connesso o meno...
Non mi e` molto chiaro quello che vuoi fare...
Se intendi lanciare fetchnews solo quando c'e` un link PPP
attivo - com'e` ovvio - basta metterlo in ip-up e lanciare da
crontab il pppd (puoi anche farti un semplice script che
lanciato da cron - es. ppp-cron - prima di chiamare ppp
costruisce un file ip-up ad hoc, lancia ppp, chiude e cancella
quell'ip-up magari rimettendo a posto quello "standard")
-- 
Bye by Red  |  PCC on a FreeBSD box                  E-mail: 
rw...@mclink.it
            |---------------------------------------------------------------
            |  "One of these nights I'll sell my soul
            |   To sleep in something that doesn't rock and roll"  (TWR)

Uso leafnode.
Ciao, io su RH-6.1, con diald installato e leafnode uso lo script seguente. Ti
premetto che e' uno dei miei primi scripts, potrebbe essere *insicuro*, 
*buggato*, quindi, magari, se c'e' qualcosa da correggere, aiutami a 
farlo ( ovviamente cio' e' rivolto a tutto il newsgroup ).
Deve girare coi permessi di root, e puo' essere messo nella crontab. Inoltre
diald deve essere comandabile con una fifo ( vedi mans di diald e diald.conf)
*N.B.* Non garantisco *sicurezza* ed *affidabilita'*. Considera che per me 
fare questo script e' stato un *esercizio* per imparare un po' di bash.
( Detto questo dico pure che io lo uso e non mi da problemi )
P.S. Scusate per la lunghezza del messaggio. Ho inteso postare lo script 
al newsgroup perche' penso che possa interessare. Spero che non venga quotato
nelle risposte :-) 
#cat /usr/local/sbin/fetchnewsPPP
#!/bin/bash 
function waitForPPP () {
TIMENOW=$(date +%s)
MAXTIME=$[ $TIMENOW + 90 ]
echo Attendo che parta il demone PPP
while [ ! -e /var/run/ppp0.pid ];
do
        TIMENOW=$(date +%s)
        if [ $TIMENOW -ge $MAXTIME ];
                then 
			echo Timeout raggiunto aspettando l attivazione di pppd
			return 0; 
        fi
done
echo PPP avviato !
return 1 
}
function waitForPPPAndRetry () {
COUNTER=0
TIMES=10
while [ $COUNTER -lt $TIMES ];
do
	if waitForPPP;
	then 	
		COUNTER=$[ $COUNTER + 1 ]
		echo ... riprovo
	else
		return 1;
	fi;
done
echo Non raggiungo la interfaccia PPP
return 0
}
#La uccisione di fetchnews se cade pppd non sempre e\' pulita 
#A volte devo rimuovere fetchnews.lck ( Qualche suggerimento? )
function stopFetching () {
TIMENOW=$(date +%s)
MAXTIME=$[ $TIMENOW + 90 ]
[ ! -e /var/lock/news/fetchnews.lck ] && return 1
echo Provo a chiudere fetchnews
kill $FETCHNEWS_PID
while [ -e /proc/$FETCHNEWS_PID ];
do
TIMENOW=$(date +%s)
if [ $TIMENOW -ge $MAXTIME ];
	then
        	echo Timeout raggiunto aspettando la chiusura di fetchnews
        	echo Chiuderlo a mano !!
		return 0;
	fi;
done
[ -e /var/lock/news/fetchnews.lck ] && rm -f /var/lock/news/fetchnews.lck
echo Fetchnews stoppato !!
return 1
}
function startFetching () {
TIMENOW=$(date +%s)
MAXTIME=$[ $TIMENOW + 90 ]
echo Provo a lanciare fetchnews
su news -c '/usr/local/sbin/fetchnews -vvv  &'
while [ ! -e /var/lock/news/fetchnews.lck ]
do
TIMENOW=$(date +%s)
if [ $TIMENOW -ge $MAXTIME ];
        then
                echo Timeout raggiunto aspettando la creazione di fetchnews.lck
                return 0;
        fi;
done
echo Fetchnews lanciato !!
FETCHNEWS_PID=$(cat /var/lock/news/fetchnews.lck)
return 1
}
# Controlla che il demone diald sia attivo, attivandolo in caso 
# contrario. Invia poi alla FIFO di diald un comando force per 
# attivare la connessione in modo permanente
[ ! -e /var/lock/subsys/diald ] && /etc/rc.d/init.d/diald start
echo force >> /etc/diald/diald.ctl
# Attende l'attivazione del demone ppp (timeout=90s)
# Abortisce se non occorsa dopo 90s
waitForPPPAndRetry && { echo Aborting; exit 1 }
#A questo punto lancia il programma fetchnews e  
#monitora lo stato di pppd. Se 
#pppd muore prima di fetchnews richiede una nuova connessione
#e rinizia fetchnews
startFetching && { echo Aborting; exit 2 }
while [ -e /proc/$FETCHNEWS_PID ];
do
	if [ ! -e /var/run/ppp0.pid ];
	then	
		echo La connessione è caduta.
		echo Chiudo fetchnews
 		stopFetching && { echo Aborting; exit 3 }
		echo Attendo il riavvio della connessione ...
		waitForPPPAndRetry && exit 1
		startFetching && { echo Aborting; exit 2 }
	fi
done
echo unforce >> /etc/diald/diald.ctl
echo Lettura delle news completata !
-- 
LB
ludbasil (at) 
inwind.it