Calendar su GNU/Linux
Questa guida vi spiegherà come configurare un servizio di appuntamenti utilizzando il comando calendar da riga di comando, presente nella maggior parte dei sistemi GNU/linux.
Analizzeremo due casi specifici: calendar ci avviserà ad ogni nuova connessione via shell; calendar ci comunicherà via email i nostri appuntamenti.
Ora dobbiamo creare un file nella home dell’utente, che verrà letto da calendar ad ogni nostra richiesta.
mkdir ~/.calendar
vi ~/.calendar/calendar
Ad ogni invocazione di calendar se il nostro sistema non trova il file presente nella home dell’utente verranno interrogati i file:
/etc/calendar/ o all’interno di /usr/share/calendar/
Per maggiori info sulla gestione di tali file:
man calendar
Ora torniamo al nostro file calendar, che supporta diverse modalità di utilizzo. Analizziamo le opzioni più importanti. In generale conviene limitarsi a scrivere righe secondo la sintassi seguente, senza commenti e lasciando eventualmente solo righe vuote o bianche:
data\tdescrizione
Tra la data e la descrizione ci deve essere un codice di tabulazione orizzontale (\t), fate particolarmente attenzione alla tabulazione (soprattutto se fate copia e incolla) altrimenti calendar ignorerà le righe senza tabulazione.
Riporto qualche esempio:
11.02 Fare gli auguri al mio amico Pippo che è nato il 2 novembre del 1980.
Ora riportiamo un esempio in cui è possibile specificare il giorno della settimana:
Sun Oggi è domenica.
Questo messaggio verrà visualizzato tutti i 27 di ogni mese
.27 Oggi è giornata di paga.
Esistono dei termini che vengono riconosciuti automaticamente da calendar, tipo:
Easter* Buona pasqua!
Easter-2 Buon venerdì di pasqua, fra due giorni è la domenica di pasqua.
Easter+1* Pasquetta.11 Fri+1 Primo venerdì di novembre.
11 Fri+2 Secondo venerdì di novembre.
11 Fri+3 Terzo venerdì di novembre.
11 Fri-3 Terzultimo venerdì di novembre.
11 Fri-2 Penultimo venerdì di novembre.
11 Fri-1 Ultimo venerdì di novembre.
Per convenzione le date con l’* sono riconosciute come festività. Altre date utili:
01.01* capodanno
01.06* epifania
04.01 pesce di aprile
04.25* liberazione
05.01* festa del lavoro
08.15* ferragosto
11.01* tutti i santi
12.08* immacolata
12.25* natale
12.26* S. Stefano
12.31 ultimo dell’anno
Ora inserendo dentro il file .bashrc il comando :
calendar
ogni volta che ci collegheremo alla console verrà richiamato il comando.
Nella seconda modalità di utilizzo ci facciamo inviare una email quando c’è un evento in calendar. Per fare questo dobbiamo fare un piccolo script con il seguente contenuto:
vi miocalendar.sh
#!/bin/bash
set -e
if [ $(/usr/bin/calendar -l 5|/usr/bin/wc -l) -gt 0 ]; then
TESTO=$(/usr/bin/calendar -l 5);
/usr/sbin/sendmail -f alias@domainmittente.ext alias@domaindestinatario.ext << EOM
From: alias@domainmittente.ext
Subject: MioCalendar
To: alias@domaindestinatario.ext
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Status: RO
X-Status:\n\n”;$TESTO
EOM
fi
Con l’opzione -l 5 diciamo a calendar di avvisarci 5 giorni prima dell’evento. Infine diamo i permessi d’esecuzione allo script:
chmod 755 miocalendar.sh
Ora inseriamo nel file cron dell’utente le seguenti istruzioni:
crontab -e
59 01 * * * ~/miocalendar.sh


