giovedì 28 agosto 2008

Lavori in tangenziale...

In questi giorni stanno facendo dei lavori di rifacimento del manto stradale sulla tangenziale che collega Baggiovara a Modena, e di conseguenza la viabilità è ridotta ad una sola corsia. Ora mi domando se non era possibile fare questi lavori prima, senza bisogno di attendere il ritorno al lavoro di tutti quanti e quindi senza arrecare tanto disagio a chi la tangenziale la deve usare per lavoro. Insomma, anziché fare i lavori per la viabilità quando i cittadini si trovano in ferie, si preferisce farli quando tutti quanti sono già al lavoro. Una scelta più che discutibile.

lunedì 25 agosto 2008

Esame di stato & tasse

Qualche settimana fa ho ricevuto una cartolina dall'Università degli Studi di Modena e Reggio Emilia che mi informava che il mio certificato dell'esame di stato (sostenuto a metà 2003!) era finalmente pronto e che potevo passare a ritirarlo presso l'ufficio Dottorati e Esami di Stato.
Siccome ho avuto qualche giorno di ferie, ho pensato bene di andare presso il suddetto ufficio per ritirare il certificato. Ora la cartolina diceva di portare la ricevuta della tassa regionale pagata, e io senza farmi troppi problemi ho portato con me la ricevuta della tassa pagata per fare l'esame di stato (circa 46 euro). Mentre attendevo il mio turno per poter parlare con l'unico impiegato presente, rileggendo la cartolina comincia a venirmi il sospetto che la tassa di cui si parla non sia quella di partecipazione all'esame di stato, ma una vera e propria tassa relativa al solo certificato. Ma ormai sono in fila da parecchio e tanto vale aspettare per chiedere chiarimenti.
Finalmente arriva il mio turno, e con mio grosso rammarico l'impiegato mi dice che non è quella in mio possesso la ricevuta corretta. Domando allora di che ricevuta e di quale tassa si tratti, e l'impiegato dopo aver scuriosato nel suo computer mi dice con tono quasi altezzoso che io non ho mai ritirato il certificato sostitutivo dell'esame di stato (cosa che potevo dirgli anche io a voce senza bisogno di interpellare il computer!). Non avendo ritirato tale certificato (utile per cosa poi non si sa) non ho pagato la tassa regionale in questione, e così l'impiegato mi presenta un bollettino postale sul quale scrive l'importo a matita (48 euro circa) e me lo passa attraverso il vetro. E quando mi sono permesso di dire che tale bollettino non mi era mai pervenuto per posta, mi viene risposto che l'Università non provvede mai al loro invio.

Ricapitoliamo: 3 anni dopo aver fatto l'esame mi viene inviata una cartolina che dice che posso provvedere al ritiro di un documento portando con me la ricevuta di una tassa non specificata, da pagare su un conto corrente non specificato poiché non viene mandato il bollettino a casa. Ho comprato una marca da bollo (perché ovviamente serve anche quella!) inutilizzata. Ho perso una buona ora per fare la fila in un ufficio con un solo impiegato, che apre 2 ore al giorno e che risponde al telefono solo 1 ora al giorno (e stranamente il telefono è sempre occupato in quell'ora) senza ottenere nulla.
E' questo il modo con il quale l'università intende lavorare nel 2008? Devo fare la fila due volte per ottenere un solo documento (una volta per prendere il bollettino e una volta per consegnarlo)?

Penso che andrò avanti ancora per un bel po' con l'autocertificazione, dopotutto se la stessa università accetta l'autocertificazione per i propri concorsi...

E poi non voglio sovraccaricare di lavoro quei poveri impiegati dell'ufficio dottorati.

sabato 16 agosto 2008

Barnzy

David Barnes è sicuramente un arciere molto forte, ed è anche uno di quelli più spesso mostrati nelle sequenze fotografiche del libro di Kisik Lee. Nonostante questo non posso fare a meno di notare come l'arco di Barnzy ruoti in maniera forse eccessiva e quasi non naturale.

Tuttavia è evidente che gli arcieri Australiani allenati da Kisik Lee non sono estranei a movimenti esagerati...basti guardare le foto di rilascio riportate qui per rendersene conto.

venerdì 15 agosto 2008

La mia cattiva esperienza con LDAP, Ubuntu e do-release-upgrade

L'ultimo giorno di lavoro ho deciso di fare l'aggiornamento di un server di produzione Ubuntu dalla 7.04 alla 8.04. Devo dire che ho deciso di fare questo aggiornamento solo dopo averlo provato su altre 3 macchine senza aver avuto grossi problemi. Gli unici problemi effettivi riscontrati sono stati con gli aggiornamenti dei pacchetti delle lingue, che si bloccavano durante il processo di update e dovevano essere killati manualmente perché l'update proseguisse. Ad ogni modo i problemi che mi attendevano erano ben più seri.
Dell'ora prevista per l'aggiornamento ce ne sono volute circa 2 solo per lo scaricamento e l'installazione dei pacchetti. E al riavvio del server OpenLdap non andava più. In effetti il sistema mi aveva indicato degli errori su appunto OpenLdap e Samba (la cui autenticazione dipende da OpenLdap). Ho così cominciato a cercare di far funzionare OpenLdap, fino all'errore, dettato dallo stress, che mi ha portato a rimuovere il contenuto di /var/lib/ldap/ e quindi il database ldap effettivo. Fortuna che l'aggiornamento di Ubuntu aveva provveduto a fare un backup del database. Ma la copia hot dei file del database non ha funzionato al primo colpo, o almeno non si rilevavano errori nel demone slapd ma non si otteneva l'accesso al sistema. Finalmente, una volta individuati i file di backup corretti e sistemati i permessi degli stessi, finalmente il server ldap mostrava il contenuto di tutti gli utenti e si riusciva ad autenticarsi sul sistema.
Ma l'autenticazione samba ancora non andava!
Anzitutto pensavo che la colpa fosse dell'aggiornamento Ubuntu, che (come spesso accade) aveva rimosso lo schema Samba dai file di configurazione di ldap. Ma oltre a questo, si era venuto a creare una sorta di doppio database degli oggetti ldap, percui ogni utente figurava due volte sotto due rami distinti, solo che mentre le informazioni di un ramo erano corrette, quelle dell'altro ramo non lo erano. Ho così cancellato l'intero ramo difettoso, sperando nella ripresa di Samba, che effettivamente ha ripreso a funzionare ma non prima di aggiungere manualmente gli utenti con smbpasswd. A questo punto il problema finale: reinserire tutti gli utenti e le relative password. Fortunatamente, grazie ad uno script che faceva uso di awk sono riuscito a dare in pasto al sistema il mio file CSV con gli utenti, e a ripristinare definitivamente lo stato del sistema.

Ma alla fine di tutto questo mi chiedo: come mai gli aggiornamenti di Ubuntu creano spesso problemi con ldap?

venerdì 1 agosto 2008

Controllare lo spazio disco di un server

Lo script che presento di seguito viene utilizzato in combinazione con cron per il controllo periodico dell'utilizzo dei dischi e delle partizioni di un server. Qualora lo spazio disco superi una soglia percentuale (ad es. il 95%) della sua capacità totale, allora viene inviata una e-mail di notifica.
L'idea è quella di usare il comando df per ottenere le informazioni su ogni filesystem in uso nel sistema, e di verificare se la quantità percentuale di spazio disponibile sia inferiore alla soglia. Nel caso lo spazio disponibile sia inferiore alla soglia percentuale fissata, viene visualizzato un messaggio sullo standard output e, tramite tee, salvato in un file. Tale file viene poi inviato via e-mail ai destinatari della notifica.

#!/bin/bash

PROGRAM_VERSION=1.0


DF_CMD=`which df`
GREP_CMD=`which grep`
AWK_CMD=`which awk`
SED_CMD=`which sed`
EXPR_CMD=`which expr`
MAIL_CMD=`which mail`
MSG_FILE=/tmp/diskSpace.$$
HOSTNAME_CMD=`which hostname`
DATE_CMD=`which date`
BASENAME_CMD=`which basename`
RM_CMD=`which rm`
BASENAME_CMD=`which basename`
TEE_CMD=`which tee`
SEND_EMAIL="false"

# prelevo la soglia di controllo
THRESHOLD=90
if [ $# -ge 1 ]
then
THRESHOLD=$1
shift # escludo altri parametri da linea di comando
fi


# Creazione del file temporaneo per il report.
SERVER_NAME=`$HOSTNAME_CMD`
PROGRAM_NAME=`$BASENAME_CMD $0`
echo "Report sullo stato dei dischi del server $SERVER_NAME" > $MSG_FILE
echo "generato in data " `$DATE_CMD` >> $MSG_FILE
echo "dal programma $PROGRAM_NAME versione $PROGRAM_VERSION" >> $MSG_FILE
echo "----------------------------------------------------------" >> $MSG_FILE


OLD_IFS=$IFS
IFS=$'\n'

for line in `$DF_CMD -Pha`
do
FILESYSTEM=`echo $line | $AWK_CMD '{print $1;}'`
BUSY=`echo $line | $AWK_CMD '{print $5;}' | $SED_CMD 's/%//'`
MOUNT_POINT=`echo $line | $AWK_CMD '{print $6;}'`

# controllo che lo spazio sia effettivamente un numero,
# per evitare di controllare la linea di instestazione
# o altre linee non utili
`$EXPR_CMD $BUSY + 0 > /dev/null 2>&1`
if [ $? -eq 0 ]
then

# controllo se questo file system supera la soglia stabilita
if [ $BUSY -ge $THRESHOLD ]
then
echo "Attenzione: partizione $FILESYSTEM ($MOUNT_POINT) occupata al $BUSY% (soglia fissata al $THRESHOLD%)" | $TEE_CMD -a $MSG_FILE
SEND_EMAIL="true"
fi
fi

done

IFS=$OLD_IFS

# devo inviare per e-mail la notifica?
if [ $# -ge 1 ]
then
if [ "$SEND_EMAIL" = "true" ]
then
for addressee in $*
do
$MAIL_CMD -s "$SERVER_NAME: partizioni occupate oltre la soglia!" $addressee < $MSG_FILE
done
fi
fi

# rimozione del file temporaneo
$RM_CMD $MSG_FILE

Cambiare la password di PostgreSQL

Se ci si è dimenticati la password di un utente PostgreSQL occorre collegarsi al database e alterare l'utente relativo con il comando:

alter user with password '';

e quindi la procedura è abbastanza semplice. Ma se la password dimenticata è quella del super utente del cluster? In quel caso occorre cambiare prima il file pg_hba.conf mettendo il metodo di accesso al database come trust (almeno per l'utente amministratore), collegarsi al database, settare la password con il comando di cui sopra e reimpostare il file pg_hba.conf come in precedenza.

Cancellare i file piu' vecchi di una determinata data

Molto spesso gli utenti che utilizzano degli spazi condivisi pubblici su dei server si scordano di cancellare i file che non servono piu', lasciando quindi intasato il server stesso e consumando spazio che altri utenti potrebbero usare. Quando lo spazio server pubblico viene usato come pura area di scambio, è possibile impostare un job con cron che cancelli i file e le cartelle più vecchie di un certo numero di giorni (e quindi presumibilmente non piu' utili). Il seguente script si basa su find e su xargs e cancella i file piu' vecchi del numero di giorni specificato come parametro.

#!/bin/bash

# Programma per cancellare file e directory piu' vecchi di un tot. di giorni.
# $1 = directory radice dalla quale partire
# $2 = numero di giorni per la vecchiaia (di default 180)

SOURCE_DIR=$1
AGE=180
FIND_CMD=`which find`
RM_CMD=`which rm`
RM_OPTS="-f"
XARGS_CMD=`which xargs`
XARGS_OPTS="-0"

if [ $# -ge 2 ]
then
AGE=$2
fi


# controllo parametri
if [ ! -d $SOURCE_DIR ]
then
echo "Il percorso specificato $SOURCE_DIR non punta ad una directory"
exit 1
fi

AGE=`expr $AGE + 0`
if [ $? -ne 0 ]
then
echo "L'anzianita' dei file (in giorni) non e' un numero ma $AGE"
exit 2
fi



# effettuo la pulizia
AGE="+$AGE"
$FIND_CMD "$SOURCE_DIR" -xdev -mtime $AGE -type f -print0 | $XARGS_CMD $XARGS_OPTS $RM_CMD $RM_OPTS
echo "Fatto <$?>"