Cose che ho letto

sabato 22 dicembre 2012

Inviare email da OpenWRT con Python

Una possibile funzione che potrebbe essere interessante implementare sul vostro router, è quella di inviare email con le più svariate informazioni.


Ora, nativamente OpenWRT ha un suo sistema per l'invio di email e quindi un sistema smtp ecc..
Francamente non mi ci trovo granché, sai perchè non sono ancora molto espero di programmazioni di script SH, sia perchè è un pò limitato. Mi sono buttato quindi su Python, che è più facile da usare, e molto più espandibile.
Abbiamo gia conosciuto questo linguaggio in una guida precedente, che vi consiglio di leggere, ed anche come installarlo e avviare semplici programmi client e server, procediamo quindi a un semplice esempio di implementazione.



Prima di continuare: L'autore di questo articolo non si ritiene responsabile, sotto nessun'aspetto, di qulunche uso illecito che verrà fatto da terzi di questa guida. Che sottolineo, è solo a scopo informativo.

Per cominciare scarichiamo i due codici, Client e Server
I due programmi comunicano tramite un semplice socket per scambiarsi istruzioni per l'utente e dati per la costruzione del messaggio.
Ovviamente il server andrà piazzato in una vostra cartella sul router, e avviato al momento desiderato per il test. Successivamente con una modifica che vi spiegherò, faremo in modo che il programma giri sempre, quindi sia pronto all'uso in ogni momento.

  • Avviamo il server
  • python /percorso/myMailServer.py
  • Vedremo apparire lo stato del programma
  • Avviamo il client
  • python /percorso/myMailClient.py
  • Inseriamo i dati confermando con invio
  • Controlliamo la corretta comunicazione dei programmi
  • Attendiamo la conferma dell'invio 
Se non funziona certamente avrete molte domande da farmi, ma se funziona ne avrete sicuramente una, una sola, ma molto importante

Ma come! Mi viene chiesto di inserire il mittente?

Ebbene si, questa particolare implementazione python, non è necessario avere un indirizzo email valido da assegnare al router per permettere l'invio di messaggi, perche non sfruttiamo un smpt locale, perchp verrebbe preso come non buono da molti mail provider, ma bensì uno più "famoso". Cosa utile nel caso in cui non siate interessati a registrarne un indirizzo mail. In ogni caso, se preferite modificare il programma per usarne uno, quindi con nome, dominio e password, vi rimando alla doc ufficiale di Python e a questa semplice guida.

Per fare in modo che il programma server resti in running in attesa di nuovi ordini, dobbiamo solo mettere tutto il programma dalla linea 7 in poi, dentro un bel ciclo while 1

Le possibili applicazioni di questo semplice codice sono moltecipli, per cominciare eliminiamo la parte di richiesta dei dati sostituendoli con stringhe fisse o dipendenti da altre funzioni di python, e poi regoliamo l'invio di email su parametri temporali fissi o legati ad eventi. Le librerie per python sono davvero tante, quindi le informazioni che possiamo controllare e gestire sono davvero per tutti i gusti.

In particolare al momento sto lavorando ad un programma che in costante comunicazione via seriale con un arduino, attende la comunicazione del verificarsi di un evento, il superamento di una certa soglia di temperatura, alchè legge i dati, compone l'email, e la invia ad un sistema che ha una connessione internet non molto veloce e a pagamento, quindi non potrebbe stare sempre in comunicazione con l'arduino, e perciò si connette ogni tot minuti per controllare la presenza di mail e agire di conseguenza.

Restate sintonizzati per aggiornamenti e nuovi progetti ;)


Ah, e ricordatevi di seguire anche un altro blog molto interessante e sempre aggiornato, per chi ama la tecnologia o si avvicina per la prima volta al mondo di internet: GitufoWeb

Nessun commento:

Posta un commento