Ricevere "update warnings" via mail e aggiornare automaticamente il sistema

Ven, 04/02/2005 - 16:14

Ricevere "update warnings" via mail e aggiornare automaticamente il sistema

Inviato da Pinguino 3 commenti
1. introduzione

La guida nasce dall'esigenza di avere un modo semplice per ricordarmi di aggiornare il PC, e sfrutta le potenzialità di cron (il servizio che permette di eseguire automaticamente operazioni a scadenze fisse) e di un semplicissimo bash-script.

2. Funzionalità

Utilizzare cron per attivare uno script che controlli la disponibilità di eventuali aggiornamenti e mandi in automatico una email all'amministratore con l'esito del processo. Opzionalmente c'e' la possibilità impostare direttamente il download e l'installazione dei nuovi pacchetti.

3. Prerequisiti

Perché l'operazione vada a buon fine occorre che:

a) la connessione internet sia attiva

Cool sia correttamente configurato urpmi

c) siano installati i seguenti pacchetti: postfix e sendmail necessari per l'invio della email di avvertimento e urpmc che il programma che controlla la presenza degli aggiornamenti.
Per installare questi pacchetti digitate nel terminale (come root) :

urpmi sendmail postfix urpmc

una volta installati accertatevi che il servizio postfix sia attivo digitando:

/etc/init.d/postfix start

Se vi da OK tutto bene, potete cominciare.

4. Lo Script

Lo script è questo. Create (come root) un file di testo con il vostro editor preferito e incollatelo:


#!/bin/sh
#
#updateWarnings script 1.0 Made by Davide
#Contact: davide.duina[at]gmail.com
#
#[globals]
#
#Adminstrator email:
#
MAIL=youremail@foo.com
#
#
# --nochangelog flag to avoid changelog message
# --um flag launch automatically urpmi.update
#
BODY=$(urpmc --um --nochangelog)
#
#[script]
#
if [ -n "$BODY" ]; then
echo -e "`date` \n\n urpmc has found these updates for $HOSTNAME: \n\n\n $BODY" | mail ${MAIL} -s "`date` It's time to urpmi!"
#
# you can add a automatic-update feature: toggle comment after next line.
#
#urpmi --auto --auto-select
#
else
echo -e "`date` \n\n No update available at this moment for $HOSTNAME!" | mail ${MAIL} -s "`date` No update available."
fi

date un nome allo script (io l'ho chiamato updatewarning.sh) e salvatelo in un posto sicuro (io l'ho salvato in /etc/)..

Per fare partire automaticamente anche l'update se vengono trovati aggiornamenti va decommentata la linea urpmi --auto --auto-select all'interno dello script
5. Modificare crontab

Ovvero come far attivare lo script a intervalli predefiniti.

Propongo due sistemi:

a) Metodo 1.

crontab -e

che vi apre un file con l'editor Vim.

L'unica attenzione da porre a Vim è che non è proprio user-friendly. Attenzione ai tasti che toccate.

a) per inserire una linea premete "i" sulla tastiera (senza virgolette, solo il tasto della Sleepy Dovrebbe comparirvi -- INSERT -- in basso. Ok. potete scrivere.

a questo punto inserite una linea del tipo:

38 15 * * * sh /etc/updatewarning.sh

Spiegazione: il secondo numero rappresenta le ORE (le 15) il primo i minuti (38) lo script verrà eseguito ogni volta alle 15:38 .. Se volete cambiare la policy di esecuzione, inserite dei numeri al posto degli altri asterischi: il terzo da sinistra indica il giorno del mese, il mese, il giorno della settimana.. Settati gli orari e indicato il comando per lanciare lo script, premete ESC e quindi digitate per salvare:

:write

(ricordatevi i : iniziali)

e quindi per uscire:

:quit

se avete sbagliato qualcosa, uscite senza salvare con:

:quit!

Controllate quindi di avere fatto tutto giusto. Nella shell (come root) digitate:

crontab -l

che vi darà la lista dei comandi inseriti in crontab.

a) Metodo 2.

Se non volete preoccuparvi di modificare la crontab, potete scegliere un'altra via, ancora più semplice, copiando il vostro script in una delle seguenti directory:

/etc/cron.daily/ (una volta al giorno)
/etc/cron.hourly/ (ogni ora)
/etc/cron.weekly/ (una volta alla settimana)
/etc/cron.monthly/ (una volta al mese)

Questo in base al file /etc/crontab, che contiene le seguenti linee:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root nice -n 19 run-parts /etc/cron.hourly
02 4 * * * root nice -n 19 run-parts /etc/cron.daily
22 4 * * 0 root nice -n 19 run-parts /etc/cron.weekly
42 4 1 * * root nice -n 19 run-parts /etc/cron.monthly

Come spiegato sopra, potete notare come siano settati i valori temporali (a sinistra), mentre il comando run-parts lancia tutti gli script all'interno di una determinata directory (quella specificata), "nice -n" invece varia la priorità del processo, prendendo come argomento un valore da -20 (massima priorità) a 19. Valore standard è 10: gli script in questione verranno lanciati quindi alla minima priorità.
6. Conclusione

A questo punto è tutto pronto per l'uso. Lo script verrà avviato in automatico al momento indicato.

Lo script è ancora molto grezzo, prima di tutto perché non sono un tecnico. Sono possibili molte migliorie (una email che comunichi l'eventuale aggiornamento effettuato, per esempio?) e cambiamenti. Rimango a vostra disposizione per correzioni, suggerimenti, critiche e proposte.




Commenti

Ritratto di Pinguino
#1

Inviato da Pinguino il Mar, 08/02/2005 - 01:48.

Errata Corrige

Credendo non fosse installato di default non ho menzionato che, insieme ai pacchetti urpmc, postfix e sendmail andava installato anche mailx:

urpmi mailx

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16



Ritratto di cosmico
#2

Inviato da cosmico il Ven, 06/05/2005 - 08:56.

sendmail non si istalla....

Nella Mandriva 2005 LE, sendmail va in conflitto con postfix:

Installazione di sendmail-8.13.3-2mdk.i586.rpm cyrus-sasl-2.1.19-12mdk.i586.rpmda /var/cache/urpmi/rpms
In preparazione... #############################################
Installazione fallita:
file /etc/pam.d/smtp from install of sendmail-8.13.3-2mdk conflicts with file from package postfix-2.1.5-6mdk

C'è u modo per installarlo o per far partire lo script senza sendmail?

Saluti
simone

Linux Registered User Mandriva 2008 Spring #369296



Ritratto di Pinguino
#3

Inviato da Pinguino il Ven, 06/05/2005 - 09:48.

Re: sendmail non si istalla....

Ciao, temo sia per colpa di una cattiva sincronizzazione dei pacchetti..

prova a fare:

urpme --allow-nodeps postfix

quindi:

urpmi sendmail

e quindi:

urpmi postfix

<EDIT>

non funziona neppure così. cmq levando sendmail e lasciando postfix funziona tutto cmq

</EDIT>

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16