Vi è mai capitato di aver giocato una o più schedine e di non poter controllare i risultati aggiornati perchè ci si trova fuori casa? Ebbene, questo è lo scrip che fa per voi. Basta avere a disposizione una macchina Linux ed un numero Vodafone abilitato alla ricezione degli MMS.
Per prima cosa andiamo ad individuare quali software sono necessari per il corretto funzionamento dello scrip:
1) Lynx, ovvero un browser testuale. Per installarlo basta digitare il comando (su Kubuntu 9.04)
sudo apt-get install lynx
2) MoioSMS, ovvero un client da linea di comando che ci permette di inviare gratuitamente MMS verso i numeri Vodafone. Per installarlo occorre aggiornare la lista dei repository aggiungendo la seguente stringa al file /etc/apt/sources.list
deb http://www.moioli.net/files/repository ubuntu beta
e successivamente lanciando il comando
sudo apt-get update
Bene, una volta completata l’installazione dei software sopra elencati possiamo procedere con la creazione di una nuova directory, che nella fattispecie chiameremo partite, all’interno della quale salvare tutti i file necessari al nostro scrip. Digitiamo quindi:
mkdir partite
dopo esserci posizionati sulla nostra home.
Adesso creiamo il file controlla_partite, all’interno del quale andremo ad inserire il nome di una o più squadre impegnate nei match di nostro interesse.
touch controlla partite
Apriamo il file in scrittura usando un editor di testo ed aggiungiamo ad esempio la stringa AS Roma. Salviamo e chiudiamo il file. Di seguito è presente un esempio del contenuto relativo al file controlla_partite:
Juventus As Roma Lazio
Creiamo il file di log che chiameremo matchlog in cui verranno salvati tutti gli eventuali errori generati durante l’esecuzione del nostro scrip. Tale file dovrà essere posizionato all’interno della dir /var/log:
sudo touch /var/log/matchlog
Ora creiamo un altro file chiamato match all’interno del quale andremo ad inserire il seguente codice:
#!/bin/bash #File di log FILELOG=/var/log/matchlog #Numero di Telefono a cui inviare NUMERO=<numero di cell al quale inviare gli MMS> #Account MMS ACCOUNT="Vodafonemms" ROOT_UID=0 #necessario per MoioSMS e per scrivere nella cartella /var/log #Controllo che lo scrip venga eseguito da root if [ "$UID" -ne "$ROOT_UID" ];then ERRORE1="Errore 1: Devi essere root per eseguire lo scrip" echo $ERRORE1 echo "$(date) $ERRORE1" >> $FILELOG exit 1 fi if [ -s controlla_partite ];then lynx -dump www.livescore.com > risultati.txt while read line do cat risultati.txt | grep "${line}" >> cambiamenti; sed -i 's/[[0-9a-zA-Z.]*]//g' cambiamenti; #rimuovo i marcatori generati da lynx done < controlla_partite if [ -s cambiamenti ];then sed -i 's/ */ /g' cambiamenti; #sostituisco gli spazi multipli con un unico spazio cut -d" " -f 3- cambiamenti > cambiamenti_temp; if [ -f cambiamenti_temp ];then sed -i 's/^[ t]*//g' cambiamenti_temp; #elimino gli spazi vuoti ad inizio riga if [ -f cambiamenti_backup ];then #confronto i due file e salvo le differenza all'interno di notifica diff cambiamenti_temp cambiamenti_backup > notifica else touch cambiamenti_backup; cp cambiamenti_temp cambiamenti_backup rm cambiamenti exit 1 fi else ERRORE3="Errore 3: Il file cambiamenti_temp non esiste." echo $ERRORE3 echo "$(date) $ERRORE3" >> $FILELOG exit 1 fi else if [ -f cambiamenti ];then rm cambiamenti #nel caso in cui cambiamenti sia vuoto else ERRORE2="Errore 2: Il file cambiamenti non esiste. Controlla i permessi" echo $ERRORE2 echo "$(date) $ERRORE2" >> $FILELOG fi exit 1 fi #se il file notifica esiste e non risulta vuoto, ovvero ci sono differenze if [ -s notifica ];then #aggiorno il file di backup usato per il confronto cp cambiamenti_temp cambiamenti_backup #individuo i parametri da inviare con l'SMS TESTOSMS=$(cat cambiamenti) ESITO=$(sms $NUMERO "$TESTOSMS" $ACCOUNT) #invio le informazioni #ora posso rimuovere il file notifica in quanto il messaggio risulta inviato rm notifica #elimino il file cambiamenti in quanto il messaggio risulta inviato rm cambiamenti else rm notifica rm cambiamenti fi else if [ -f cambiamenti_temp ];then rm cambiamenti_temp; fi if [ -f cambiamenti_backup ];then rm cambiamenti_backup; fi exit 1 fi exit 0
Come potete notare lo scrip è ampiamente commentato, quindi vi sarà certamente possibile capirne il senso. Ho inoltre inserito parecchi controlli (aumentando inevitabilmente le righe di codice) per evitare comportanenti inaspettati.
Digitiamo, inoltre, il comando:
sudo chmod +x match
per rendere eseguibile il nostro file.
Non ci resta che mandare in esecuzione lo scrip ogni 5 minuti in modo che venga effettuato un monitoraggio costante delle partite. Per fare ciò basta aggiungere la seguente regola a cron, editando il file /etc/crontab:
*/5 * * * * root cd /home/nightfly/partite && ./match > /dev/null 2>&1
A presto.
PS: ovviamente lo scrip non è immune da eventuali errori o miglioramenti, nel caso in cui ne individuaste qualcuno non esitate a contattarmi.
PPS: se non volete controllare l’esito di alcun match rimuovete il file controlla_partite oppure svuotatelo completamente mediante il comando:
sudo cat /dev/null > controlla_partite
e successivamente, per verificare che il file sia effettivamente vuoto basta digitare:
stat -c %s controlla_partite