sexta-feira, 31 de outubro de 2014

Enviar email contendo o IP da RaspberryPi automaticamente

Uma das formas de utilizar a RPi sem a necessidade de um monitor é acessá-la remotamente através de ssh ou até mesmo de um servidor VNC. Entretanto, quando o IP atribuído a RPi não é fixo, precisamos de alguma forma descobri-lo sem acessar a RPi diretamente. Um das saídas para este problema é apresentada a seguir e consiste em fazer a RPi enviar o seu IP por e-mail toda vez que o cabo Ethernet for conectado e um IP for atribuído.

Os passos apresentados abaixo foram testados em uma RPi modelo B rodando o sistema operacional Raspbian wheezy.

1. Primeiramente precisamos baixar o pacote ssmtp, ele é um cliente smtp utilizado para enviar mensagens para um servidor smtp.
 sudo apt-get install -y ssmtp   

2. Abrir o arquivo '/etc/ssmtp/ssmtp.conf', este é o arquivo de configuração do cliente smtp.
 sudo vim /etc/ssmtp/ssmtp.conf  

3. Editar o arquivo '/etc/ssmtp/ssmtp.conf' com as informações abaixo:
 ############################################################################  
 root=postmaster  
 # Como utilizamos o gmail, colocamos o servidor smtp dele.  
 mailhub=smtp.gmail.com:587  
 # nome do host(parte posterior ao @ do email)  
 hostname=gmail.com      
 # usuario(parte anterior ao @ do email)  
 AuthUser=jua_labs  
 # senha       
 AuthPass=juapw  
 # criptografia  
 UseSTARTTLS=YES  
 ############################################################################  

4. Criar arquivo '/etc/network/if-up.d/mailip'.
 sudo vim /etc/network/if-up.d/mailip  

5. Inserir as informações abaixo no arquivo '/etc/network/if-up.d/mailip'.
 ############################################################################  
 #!/bin/sh  
 # email destino  
 mailreciever=jua.labs@gmail.com   
 # salvamos a data  
 today=$(date)  
 # guardamos o IP na variavel my_ip  
 my_ip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{print $1}'`  
 #o '\n\n' sinaliza que o que virá apos será o corpo do email   
 my_pi="Subject: RPi reiniciada!\n\n"  
 #mensagem a ser enviada  
 message="$my_pi reiniciada em: $today.\nIP atual = $my_ip"  
 #salvamos a mensagem em um txt  
 echo $message > message.txt  
 #enviamos o 'message.txt' por meio do programa 'ssmtp' ao jua.labs@gmail.com  
 ssmtp ${mailreciever} < message.txt  
 ############################################################################  

6. Reinicie a RPi e a reconecte a rede, toda vez que ela receber IP ela enviará para o email especificado na variável mailreciever do código do tópico 5.

Referências:

* https://wiki.debian.org/sSMTP
* https://googledrive.com/host/0B1nrvbH9mKucaWJuUFN6S2lyU1k/09-Email%20&%20FTP.pptx