Fazendo pushes de scripts para o celular.

Quem utiliza scripts para monitorar servidores, principalmente domésticos, não deve achar vantajoso pagar por alguma solução de alerta por sms, por exemplo para quando um download terminou ou quando o sistema está ficando perigosamente com poucos recursos.

Por outro lado, a comodidade de ser avisado ao invés de ter que ativamente buscar a informação é bastante motivadora a ponto de procurarmos soluções alternativas.

Neste artigo será descrito como realizar a monitoração do espaço disponível em um servidor de arquivos e enviar para o celular do administrador uma mensagem sempre que um limiar de espaço disponível for cruzado.

Para realizar isso será utilizado um servidor Linux, que será o servidor de arquivos e o software Pushbullet, que será o responsável por receber as notificações.

Inicialmente, acessar o site do Pushbullet, criar uma conta e instalar no celular o aplicativo (disponível para Android e IOS).

Após isso, basta ir no site e descobrir qual o token de acesso ao telefone que irá receber a mensagem ( é um código parecido com esse: bxrj46KOnhAmgen2ZMG2jnr47onwPUbH ).

Para enviar a mensagem, no servidor, instalaremos o software Curl. Se não tiver sido instalador por padrão pela distribuição, basta instalá-lo.

O seguinte script  serve para monitorar o espaço em disco no drive do servidor e envia uma mensagem quando o espaço ocupado em disco passar de 90, descrito na variável ‘threshold‘ (utilizando a saída do comando  df -H e capturando a linha correspondente ao drive selecionado. Deve ser adaptado caso se use em outro computador, o que não é difícil).

#!/bin/bash 
#Maximum disk usage in percent. Beyond this, send a message. 
THRESHOLD=90 
 
df -H | grep -vE '^Filesystem|tmpfs|cdrom|none|udev|shm|cgroup' | awk '{ print $5 " " $1 " " $4}' | while read OUTPUT; 
 
do 
  
  USEP=$(echo $OUTPUT | awk '{ print $1}' | cut -d'%' -f1  ) 
   
  DSK_FREE=$(echo $OUTPUT | awk '{ print $3}' ) 
  PARTITION=$(echo $OUTPUT | awk '{ print $2 }' ) 
   
  if [ $USEP -ge $THRESHOLD ]; then 
    MESSAGE="Running out of space on \"$PARTITION \". Only  $DSK_FREE left on device." 

    <run send to phone script> "$MESSAGE"   

  fi 
 
done
 I

script que segue, envia uma mensagem qualquer para o celular cuja chave de acesso esteja na variável “API”.

#This script receives a message as a parâmeter and sends to a push bullet enabled device. 
#!/bin/bash 
 
#Device unique id, available on your pushbullet account. 
API="bxrj46KOnhAmgen2ZMG2jnr47onwPUbH" 
 
MSG="$1" 
 
curl -u $API: https://api.pushbullet.com/v2/pushes -d type=note -d title="Alert" -d body="$MSG"

Segue uma amostra de como essa mensagem chega no dispositivo: