Newsgroup: it.comp.os.linux.iniziare
Titolo: Schedulazione

Scusate ragazzi, forse sono OT, ma avrei la necessità di schedulare alcune 
operazioni da far eseguire alla mia macchina Linux ogni 12 ore. Avrei 
necessità che ad una data ora
        1) Si connetta ad Internet
        2) Scarichi la posta
        3) Aggiorni le news
        4) Si disconnetta.
Sapete come fare?
Grazie

On Fri, 25 May 2001 14:22:40 +0200, Raffaele Visconti used the keyboard to type:

man crontab
ti spiega come  fare. 
Per scaricare la  posta e le news quando parte  la connessione bastano degli
script in /etc/ppp/ip-up.d/
Saluti,
Tiziano. 
-- 
Togli ABC per rispondere via email.
***********************************
Si cercano intrepidi  volontari per la realizzazione della versione 
per KDE dei programmi Agata e AgOne. E' necessario lo sforzo di tutti.

 ha scritto nel messaggio
news:gqile9...@raffaele.visconti.locale...

Per lo scheduling vai di cron e gli fai lanciare la connessione con lo
stesso comando che usi da console (quella testuale, il kppp e compagnia te
li puoi scordare).
man cron
man 1 crontab
man 5 crontab
Per le operazioni
devi mettere tutti i comandi in /etc/ppp/ip-up tipo
/usr/bin/fetchmail -f filediconfigurazione
/usr/bin/fetchnews
/usr/local/bin/ppp-off
fetchmail e fetchnews probabilmente li hai gia'
ppp-off e' da fare ma trovi senz'altro un esempio in
/usr/share/doc/ppp*/examples/scripts e lo puoi sostituire con il comando che
usi normalmente per disconnetterti quando navighi.
Qui trovi anche degli esempi di script di connessione gia' pronti, solo da
adattare un po'
svantaggio: se vuoi navigare devi trovare il meccanismo per fargli fare il
ppp-off solo quando la connessione e' stata lanciata automaticamente e non
quando e' richiesta da un utente.
*ALTRO MODO*
Configuri pppd per attivare la connessione on demand
e da cron lanci direttamente
/usr/bin/fetchmail -f filediconfigurazione
/usr/bin/fetchnews
svantaggio: la connessione on demand si stacca dopo 10 minuti di silenzio
sulla linea del modem, quindi avresti per ogni connessione questi 10 minuti
in piu' nella bolletta.

 
un terzo modo dal mio punto di vista
fare uno script del tipo?
-------begin troll.sh------
#!/bin/sh
#se non esiste pppd lo fa partire
if  [ ! "`ps ax | grep pppd | grep -v grep`" ]
	then
	pppd # o il tuo comando per alzare la connessione
	sleep 25 # aspetta 25 secondi, se ti sembra troppo abbassa
fi
for I in 0 1 2 3 4 5 6 7 8 9 # conta fino a dieci
do
	if [ "`ifconfig | grep ppp0`" ] # c'e l'interfaccia ppp0?
	then # si. c'e'
		comando #qui metti
		comando #i comandi
		comando  # da eseguire
		killall pppd #o lo sostituisci con il tuo programma per chiudere la connessione
		exit 
	else # no non c'e'
		sleep 25 # aspetta 25 secondi, se ti sembra troppo abbassa
	fi
done
killall pppd # non si sa mai, mica che ti arriva una bolletta da 1M lire
-------end troll.sh------------
(controlla che l'user con cui cron  fa partire lo script abbia permessi di exec sia su pppd che
ifconfig e probabilmente dovranno essere suid root)
se pppd non c'e lo fa partire
se l'iterfaccia ppp0 non esiste aspetta 25 secondi e ricontrolla per 10
volte
quando la trova esegue i programmi, ammazza il pppd ed esce
da far partire con cron
cosi non pasticci ip-up e ti risolvi i problemi
Ciau
Angelo

 Angelo

Raffaele Visconti ha detto:

my script rulez...
si chiama "online":
#!/bin/sh
function connect {
    #comando di connessione:
    pppd -detach connect "/usr/sbin/chat -v -f /etc/ppp/pppscript" &
    #stai ad aspettare finche` la connessione non e` completa:
    until
        ! [ "$(ifconfig | grep ppp0)" = "" ]
    do
        sleep 2
    done
}
function fetch {
    fetchmail
    fetchnews -v
    #slrnpull -h 
news.tin.it
    #aspetta finche` il mail server locale ha inviato tutta la posta:
    while [ "$(mailq)" != "Mail queue is empty" ]
    do
        sleep 3s
    done
}
function fetchperiodico {
	#questa e` per le connessioni avviate dall'utente
	#dev'essere lanciata in background
	#ogni 300 secondi controlla posta e news
    while [ "$(ifconfig | grep ppp0)" != "" ]
    do
        fetchmail
        fetchnews -v
        #slrnpull -h 
news.tin.it
        sleep 300s
    done
}
DO="$1"
if [ "$DO" = "" ]
then
    DO="normal"
fi
case "$DO" in
            auto)
		#collega, scarica e stacca
                connect &&
                fetch
                killall pppd
                ;;
            normal)
		#collega, apre un po' di finestre utili se siamo in X
		#lancia in background il download ogni 300 s.
		#e visualizza il log della connessione
                connect &&
                if ! [ "$(env | grep DISPLAY)" = "" ]
                then
                    rxvt -e tail -f /var/log/kernel &
                    licq &
                fi
                fetchperiodico &
                tail -f /var/log/messages
                ;;
		#per interrompere la connessione basta fare Ctrl-C
            *)
                echo "USAGE: online | online auto"
                ;;
esac
NB: il comando per spedire la posta ("sendmail -q" o equivalente) va
messo in /etc/ppp/ip-up.local
NB2: la stringa restituita quando la coda del mail server e` vuota 
*varia* a seconda del mail server. Controllare la propria risposta di 
mailq a coda vuota, e sostituirla alla mia nella function "fetch". 
Altrimenti, lo script lanciato con opzione "auto" rimarra` connesso in 
eterno, aspettando inutilmente che `mailq' restituisca una stringa che 
non verra` mai.
-- 
    Pardo 
 
http://pardo.cjb.net
 
http://pardo.tsx.org
PS: ovviamente lo script va cronizzato

 li puoi scordare).
...
Per quale motivo? Poi benissimo utilizzare anche il kppp. Forse nel caso 
specifico, utilizzare un programma grafico è inutile (Raffaele non dice se 
deve farlo da console o sotto X..) ma questa è un'altra storia...
Ciao.
-- 
***  Per E-mail rimuovi ModE dall'indirizzo  ***
  *** Linux user # 198661 --- ICQ 33500725 ***
*** homepage 
http://web.tiscalinet.it/kailed
 ***
            *** Powered by Linux ***

Per quale motivo? Poi benissimo utilizzare anche il kppp. Forse nel caso 
Per il semplice motivo che cron non sa a quale diavolo di server X
attaccare il tuo client X.
Fidati, schedulazione e X non vanno d'accordo.
Si schedulano programmi che colloquiano in formato testo, e possono poi
rimetterti i risultati via mail, cioe' il semplice standard output
reindirizzato al proprietario dell'entry del crontab, o a root negli
altri casi.
-- 
           |Save our planet!
  Ciao     |Save wildlife;
  roberto  |For your E-MAIL use only recycled Bytes !!
           |roberto poggi  
rpo...@softhome.net

Per quale motivo? Poi benissimo utilizzare anche il kppp
Come si puo` usare il kppp in modo tutto automatico?
Ha un parametro apposta per quello?
(chiedo perche` non ce l'ho...)



[mario@mario mario]$ kppp -h
kppp -- valid command line options:
 -h : describe command line options
 -c account_name : connect to account account_name
 -k : terminate an existing connection
 -q : quit after end of connection
 -r rule_file : check syntax of rule_file
[mario@mario mario]$ kppp -c libero
-- 
Ciao, Mario.
http://digilander.iol.it/mccmario/

[mario@mario mario]$ kppp -c libero
aah... ora comprendo...
una rivalutazione del kppp... con tutti i problemi del "pppd died 
unexpectedly", ha pero` anche un lato positivo


 Fidati, schedulazione e X non vanno d'accordo.
Certo è da valutare il caso specifico, ma NON è impossibile, forse scomodo, 
forse inutile, forse ...., ma non impossibile.


forse inutile, forse ...., ma non impossibile.
Mah, ci si complica la vita in maniera indegna, IMHO.
Devi prevedere il controllo dell'esistenza o no di un server X avviato,
devi considerare dove deve andare a finire cio' che e' l'output del
programma, non riesci a dargli un input da riga di comando o da file, e
credo nemmeno da pipe. (non ci ho provato ultimamente, ma tempo fa, non
c'era possibilita', il programma si aspettava l'input solo ed
esclusivamente dal server X) e altri piccoli grandi scogli.
E filosoficamente, e' sbagliato. Augh. ho detto! :-))
