tinsms
Lo script descritto in questa pagina è stato recentemente incluso - come modulo gateway- nella libreria PERL WWW-SMS (CPAN WWW::SMS).
Indice
- Premessa
- Notifica da server remoto
- Installazione
- Requisiti
- Uso
- Uso con rubrica
- Un esempio applicativo: notifica da Web-Server
- Un esempio applicativo: uso di tinsms con ProcMail
- Un esempio applicativo: uso con MyGoogle
- jTinSMS - un client Java per il cellulare
- Download
- Fedback
- Donazione
Premessa
Chiunque abbia sottoscritto un abbonamento con Telecom ADSL di tipo ALICE-TIN)ha a disposizione 10 SMS al giorno gratuiti da poter
inviare attraverso l'interfaccia web messa a disposizione del provider. Tale
interfaccia spesso risulta lenta e di non pratico accesso all'utente che ha
la necessità
di dover rapidamente inviare un SMS trovandosi alla console del proprio PC.
Da questa esigenza nasce il programma tinsms: uno script PERL che - da linea di comando terminale
- è in grado di raggiungere la pagina web del provider, autenticarsi ed
inviare un messaggio SMS in completa trasparenza per l'utente.
Un utilizzo che ho trovato molto interessante per questo programma, è quello di associarlo a determinati eventi che si verificano in un server remoto cosicchè da ricevere un SMS di notifica sul mio cellulare quando ciò dovesse accadere. A titolo di esempio, il programma potrà essere facilmente associato ai seguenti eventi:
- particolari segnalazioni del log di sistema;
- accessi non autorizzati ad un web-server;
- allarmi provenienti da una webcam;
- impossibilità di accesso ad una determinata url;
- ecc.
Il programmi è stato testato su Ubuntu, ma essendo scritto in Perl garantisce l'esecuzione su qualsiasi distribuzione. L'unica cosa da verificare è che la prima linea del programma punti esattamente alla directory dell'interprete Perl:
Un volta copiato il programma in una directory nella path (es: /usr/bin), con un editor di testi modificate le due variabili $user e $password con i vostri dati di autenticazione al sito Communicator Virgilio. A questo punto sarà sufficiente rendere lo script eseguibile, digitando da terminale:
Le funzionalità del programma vengono assicurate dalle seguenti librerie Perl:
- LWP::UserAgent
- LWP::Simple
- URI
- Crypt::SSLeay
Digitando solo il nome da un terminale (tinsms) il programma produce in output la versione e l'uso del programma stesso. In uscita invece, visualizza il numero di messaggi inviati nella giornata.
Questa la sintassi di tinsms:
Con numero_completo si intende indicare il numero di cellulare completo
di prefisso internazionale. Ad esempio:
tinsms +393481122334 "Buongiorno Joe. Sto arrivando. Tra 10 min. sono li!"
Il prefisso internazionale può anche essere omesso. In tal caso il programma considera per default +39 (Italia).
Oltre a questo uso classico da command line, il programma tinsms può essere anche usato con il piping da STDIN, secondo questa sintassi (grazie a Sergio Giuffrida per la collaborazione):
oppure
laddove <file> contiene il path ad un file il cui contenuto è del tipo:
+393481122334 Buongiorno Joe. Sto arrivando. Tra 10 min. sono li!
In questo caso si possono omettere gli apici. Tutto ciò che segue il numero viene considerato come testo per il messaggio.
Il numero a cui spedire l'SMS può anche essere incluso nella linea di comando (uso misto); in tal caso il file conterrà solo il testo del messaggio:
La sintassi di uso di tinsms attraverso il piping di STDIN consente un'interessante impiego dello script come descritto nell'esempio applicativo "Uso con ProcMail".
Uso con rubrica (modifica a cura di snake111 e mattions del forum gentoo)
Oltre alle modalità sopra descritte, il programma può far uso di rubriche registrate in semplici file di testo e salvati in qualunque directory. Sarà suffciente creare un file di rubrica secondo questo semplice formato:
giovanni 3481234567
carla 3331122343
All'interno dello script, occorrerà poi indicare con precisione il path verso il file di rubrica alla variabile $rubrica.
Per usare il programma nella modalità "rubrica", sarà poi sufficiente digitare:
tinsms fabio "Sto arrivando"
Un esempio applicativo: notifica da Web-Server
Personalmente ho usato tinsms per ricevere notifiche da un web server nel caso di tentativi non autorizzati di login. All'interno di un programma PHP, qualora la verifica di userid e password non corrispondano con un utente registrato nel database utenti, lo script genera un errore ed attiva la trasmissione di un SMS al mio cellulare, comprensivo dell'indirizzo IP da cui l'errore è stato generato.
Questo è l'esempio di codice:
include ("../config.inc.php");
$passwd = md5($pwd);
$sql = "select * from auth where userid = '$user' and pass = '$passwd'";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 1) {
setcookie("user",$user);
setcookie("password",$passwd);
return 1;
} else {
echo "<h3>Sorry, you are not authorized!</h3>";
#log error database
$sql = "INSERT into errorlog (data,ora,utente,azione,nota)
VALUES (curdate(), curtime(),'".$user."', 'Unauthorized login attempt',
'IP=".$_SERVER['REMOTE_ADDR']."')";
mysql_query($sql);
exec ("/home/pippo/tinsms +39335xxxxxxx 'Login errato: ".$user.
" IP: ".$_SERVER['REMOTE_ADDR']."'");
unset($user,$pwd);
return 0;
}
Un esempio applicativo: uso di tinsms con ProcMail
(Per questo interessante impiego di tinsms ringrazio Fabrizio Tranchina che ha "costruito" l'idea, e Sergio Giuffrida per la collaborazione al codice.)
Usando tinsms nella sua sintassi con il piping per lo STDIN, il programma consente in pratica di poter avere a disposizione dal proprio cellulare i 10 SMS gratuiti al giorno che mette a disposizione TIN. Sarà suffiente inviare al proprio server di mail un messaggio e-mail da cellulare attraverso il numero 8214 (gratuito per gli utenti con abbonamento TIN). In pratica, inviando dal proprio cellulare un SMS al numero 8214, con questo formato:
ed implementando un filtro procmail di questo tipo:
procmail la riceve e la gira a tinsms, che la trasforma in SMS per il numero 34811223344. In pratica, quindi, si possono inviare 10 SMS gratuiti al giorno da proprio cellulare!
Nel caso di uso misto di tinsms, si può prevedere l'inoltro al proprio cellulare di e-mail provenienti da particolari utenti. Ad esempio, se voglio ricevere sul mio cellulare le email che mi arrivano da thesaltydog, sarà sufficiente implementare un filtro procmail di questo tipo:
oppure si puo' automatizzare l'invio di uno stesso sms a piu'
numeri: se ad esempio "sms" è un file di testo contenente un
messaggio e "elenco" è un file di testo contenente l'elenco dei
numeri destinatari separati da uno spazio (ad esempio: 33811223344
34755667788 33955113344), posso scrivere:
jTinSMS - Un client Java per il cellulare
L'ottimo Natale Vinto ha sviluppato un client J2ME (Java 2 Micro Edition) per tinsms cu licenza GPL2.
Potete effettuare il download dell'applicazione qui.
- tinsms v. 1.7.2 (per contratti ALICE-TIN ADSL Telecom)
Se avete bisogno di ulteriori informazioni, o se volete inviarmi un vostro parere, il mio indirizzo è
E' possibile effettuare donazioni attraverso PayPal per sostenere tinsms semplicemente facendo clic sul pulsante qui sotto: