Infra - Linux

Como Fazer o seu servidor Linux enviar avisos em seu celular Claro sem custo

Este documento permite que o servidor linux envie torpedos para celulares da operadora claro. Assim permitindo a notificação no celular do administrador do sistema sobre o status de determinadas tarefa. Agora o melhor de tudo, é que este serviço é gratuito!

por Alessandro de Oliveira Faria



Este documento permite que o servidor linux envie torpedos para celulares da operadora claro. Assim permitindo a notificação no celular do administrador do sistema sobre o status de determinadas tarefa. Agora o melhor de tudo, é que este serviço é gratuito!

INTRODUÇÃO:

Ao acessar a página de envio de TorpedoWeb da Claro, constatei que o serviço é gratuito. Com isto imaginei em criar um mecanismo onde os campos da página seriam preenchido e o botão submit fosse acionado. Foi neste momento em que tive a idéia de montar a string http gerada pelo botão submit. Neste tutorial, faremos o envio em shell-stript e também em C++. Em ambos os casos, chamaremos o navegador em modo texto (lynx) usando como endereço a string criada pelo nosso programa.

FUNCIONAMENTO:

Ao acessar http://www2.claro.com.br/torpedoweb/popuph.htm, teremos a tela abaixo:

Para enviar a mensagem, devemos preencher os campos obrigatório: DDD e Numero do Telefone destinatário, o nome do remetente e a mensagem. Reparem que o numero de caracteres disponíveis vão decrementando durante a digitação. Veja o exemplo abaixo:

Quando pressionamos o botão enviar, a seguinte string dever ser gerada para o browser:
http://www2.claro.com.br/torpedoweb/popup_senderJava.asp?ddd_para=17&telefone_para=91138154&nome_de=Cabelo& ddd_de=&telefone_de=&msg=Prezado+FABIO:+Viva+o+Linux!&caract=98

Para enviar mensagens na linha de comando, basta executar o comando abaixo:

[root@p233 /]# lynx -dump -accept_all_cookies “http://www2.claro.com.br/torpedoweb/popup_senderJava.asp?ddd_para=17&telefone_para=91138154&nome_de=Cabelo &ddd_de=&telefone_de=&msg=Prezado+FABIO:+Viva+o+Linux!&caract=98”

CRIANDO O PROGRAMA EM C++:

Este programa gera a string a partir dos parametros recebidos. E executa o navegador lynx através do comando system. O motivo de desevolver isto em C, é a possibilidade de implementarmos mensagem em rotina e/ou programas já prontos. Por exemplo: o meu servidor de banco de dados firebird foi recompilado para enviar torpedos ao meu celular quando houver mais de 3 tentativas de login como SYSDBA sem sucesso.

Segue logo abaixo o codigo em C++ para enviar o torpedo:

#include <iostream>
#include <fstream>
#include <strstream>
#include <string>
#include <sys/io.h>
 
using namespace std;
extern char **environ;
 
void executa(string lComando)
{
system(lComando.c_str());
}
string IntToString(int Cnumero)
{
strstream xx;
xx<<Cnumero;
xx<< std::ends;
return xx.str();
}
 
string Claro(string mDDD,string mNumero,string mNome,string mMSG)
{
string mRet;
 
int i,limite,usado;
limite=135;
 
usado = mNome.size()+mMSG.size();
std::cout<<"Caract:"<<usado<<std::endl;
limite=limite-usado;
 
mRet="lynx -dump -accept_all_cookies \42";
mRet=mRet+"http://www2.claro.com.br/torpedoweb/popup_senderJava.asp?ddd_para=";
mRet=mRet+mDDD+"&telefone_para="+mNumero+"&nome_de="+mNome;
mRet=mRet+"&ddd_de=&telefone_de=&msg="+mMSG+"&caract="+IntToString(limite)+"\42";
return mRet;
} 
 
int main( int argc, char** argv)
{
string lDDD,lNumero,lNome, lMSG;
int i;
 
std::cout << " _ _ ___ _____ _ _____ ___ ___ _ _ ___ _ ___ ___ ___ _ " << std::endl;
std::cout << "| \\| | __|_ _(_) |_ _| __/ __| \\| |/ _ \\| | / _ \\ / __|_ _| /_\\ " << 
std::endl;
std::cout << "| .` | _| | | | | | | | _| (__| .` | (_) | |_| (_) | (_ || | / _ \\ " << 
std::endl;
std::cout << "|_|\\_|___| |_| |_| |_| |___\\___|_|\\_|\\___/|____\\___/ \\___|___/_/ \\_\\" << 
std::endl;
 
std::cout<<std::endl;
 
lDDD=argv[1];
std::cout<<"DDD...:"<<lDDD<<std::endl;
 
lNumero=argv[2]; 
std::cout<<"NUMERO:"<<lNumero<<std::endl;
 
lNome=argv[3];
std::cout<<"Nome..:"<<lNome<<std::endl;
replace(lNome.begin(),lNome.end()," ","+");
 
lMSG=argv[4];
std::cout<<"MSG...:"<<lMSG<<std::endl;
replace(lMSG.begin(),lMSG.end()," ","+");
 
executa(Claro(lDDD,lNumero,lNome,lMSG));
 
return 0;
}

Para compilar este programina, siga os seguinte passo:

[root@p233 torpedo]# g++ claro.cpp -o torpedoClaro -Wno-deprecated

Com o comando acima, acabamos de gera um binario com o nome torpedoClaro. Para enviar a mensagem, devemos digita como parâmetros o DDD, Numero Destino, Rementete a Mensagem. Veja o exemplo:

 
[root@p233 torpedo]# ./torpedoClaro 17 91138154 "Serv.Proxy" "AVG: Nova atualizacao disponível."
_ _ ___ _____ _ _____ ___ ___ _ _ ___ _ ___ ___ ___ _
| \| | __|_ _(_) |_ _| __/ __| \| |/ _ \| | / _ \ / __|_ _| /_| .` | _| | | | | | | | _| (__| .` | (_) | 
|_| (_) | (_ || | / _ |_|\_|___| |_| |_| |_| |___\___|_|\_|\___/|____\___/ \___|___/_/ \_
 
DDD...:17
NUMERO:91138154
Nome..:Serv.Proxy
MSG...:AVG: Nova atualizacao disponível.
Caract:43
Envio Ok.
 
fl_enviado=True 4/24/2004 3:00:04 PM,True
Variáveis limpas
[root@p233 torpedo]#

Vale a pena ressaltar, que existem maneiras mais eficientes de elaborar o programa acima. Portanto este exemplo é apenas para fundamentar o conceito/funcionamento do envio.

Agora é sua imaginação que manda, podemos incorporar esta rotina em um programa. Como agenda mensagem no crontab e também incorpora-lo em um script.

CRIANDO O PROGRAMA EM SHELL-SCRIPT:

Para quem não tem o compilado C++ instalado ou não é chegado em desenvolvimento em C++, segue abaixo a versão em Shell-Script.

Criando o script:

[root@p233 torpedo]# vi torpedoClaro
 
if [ "$4" ] ; then
ddd="$1"
numero="$2"
remetente=`echo "$3"| sed "s| |+|g;s|&|%26|g"`
msg=`echo "$4"| sed "s| |+|g;s|&|%26|g"`
echo "DDD......: $ddd"
echo "Celular..: $numero"
echo "Remetente: $remetente"
echo "MSG......: $msg"
echo "Status...: Enviando mensagem..."
URL="http://www2.claro.com.br/torpedoweb/popup_senderJava.asp"
parametro=
  `echo "?ddd_para=$ddd&telefone_para=$numero&nome_de=$remetente&ddd_de=&
  telefone_de=&msg=$msg&caract=0"`
lynx -dump -accept_all_cookies "$URL$parametro"
else
echo "uso: torpedoClaro ddd numero-destino nome-remetente mensagem" 
fi

Pronto o mesmo programa, só que em Shell, para testa-lo digite:

 
[root@p233 torpedo]# torpedoClaro
uso: torpedoClaro ddd numero-destino nome-remetente mensagem
 
[root@p233 torpedo]# torpedoClaro 17 91138154 "Serv.Proxy" "AVG: Nova atualização disponível."
DDD......: 17
Celular..: 91138154
Remetente: Serv.Proxy
MSG......: AVG:+Nova+atualização+disponível.
Status...: Enviando mensagem...

 
Envio Ok.

 
fl_enviado=True 4/24/2004 3:10:27 PM,True
Variáveis limpas
[root@p233 torpedo]#

Para economizar tempo, disponibilizeis os 2 fontes para download:

[root@p233 torpedo]# wget http://www.netitec.com.br/download/torpedoClaro

[root@p233 torpedo]# wget http://www.netitec.com.br/download/claro.cpp

O funcionamento é bem simples mas de grande utilidade. Acho que as operadoras Tim e Oi possuem este recurso de torpedoWeb. Com as devida modificações deve funcionar.

Alessandro de Oliveira Faria

Alessandro de Oliveira Faria - Sócio-proprietário da empresa NETi TECNOLOGIA fundada em Junho de 1996 (http://www.netitec.com.br), empresa especializada em desenvolvimento de software e soluções biométricas, Consultor Biométrico na tecnologia de reconhecimento facial, atuando na área de tecnologia desde 1986 assim propiciando ao mercado soluções em software nas mais diversas linguagens e plataforma, levando o Linux a sério desde 1998 com desenvolvimento de soluções open-source, membro colaborador da comunidade Viva O Linux, mantenedor da biblioteca open-source de vídeo captura entre outros projetos.