Introdução
Estava procurando por algo para intermediar a comunicação entre meu Celular( Motorola v3 ) e o Linux/FreeBSD, quando por acaso encontrei um módulo em perl que não era bem o que eu queria mas achei bastante interessante. Vi a possibilidade de manipular os sms recebidos e formatar o envio de sms, que pode ser bastante útil em um cenário em que a internet não está disponível ou a demanda de sms é baixa.
Instalação
No FreeBSD é necessário os módulos umodem e ucom, adicionamos então ao ‘/boot/loader.conf’:
ucom_load=”YES”
umodem_load=”YES”
Após reinicio( sim, reinicio, quando tentei carregar o módulo com o kldload deu panic ) do sistema, quando plugado o celular à USB veremos uma mensagem semelhante a essa na saída do comando ‘dmesg’.
ucom0: <Motorola Inc. Motorola Phone (V3), class 2/0, rev 1.10/0.01, addr 2> on uhub1
No Linux será necessário o modulo cdc_acm, dê uma olhada.
Pronto, tudo ‘ok’ para os próximos passos.
Perl:
Iremos instalar o módulo Device::Gsm que irá intermediar o processo, temos duas formas para isso.
- CPAN
- Instalação manual do módulo
1 – # cpan -i “Device::Gsm”
2 – # wget -c ‘http://search.cpan.org/CPAN/authors/id/C/CO/COSIMO/Device-Gsm-1.48.tar.gz’ && tar -zxvf Device-Gsm-1.48.tar.gz && cd Device-Gsm-1.48 && perl Makefile.PL && make && make install
Não irei me aprofundar na instalação do módulo perl, há bastante material na internet sobre o assunto, aqui ou aqui
Utilizando
Agora é o momento de soltar a criatividade, no source tem um diretório de exemplos com alguns scripts. A documentação dos métodos pode ser vista aqui.
Exemplo Nagios
A primeira coisa que pensei foi em usar junto com o nagios, quando pesquisei na documentação sobre notificações é sugerido o sms_client que parece ser interessante mas um pouco mais complicado.
Na área de desenvolvimente há também a gsmlib para o pessoal mais low-level.
O script que eu adaptei funcionou 100% com o v3 e o v550 da Motorola.
O script em sim é auto-explicativo mas vamos lá.
# echo “Mensagem de exemplo” | perl script.pl numero*
*O numero é composto pelo DDD( 2 dígitos ) + número do celular( 8 dígitos ).
Conclusão
Quando me deparei com o módulo em Perl e não achei nenhuma informação sobre o mesmo em Português, senti-me motivado para escrever sobre o mesmo, achei o módulo bastante interessante e com diversas possibilidades de uso. Eu citei apenas um exemplo( Imaginei várias formas de uso mas optei por postar a mais coerente com a realidade) mas a medida que o pessoal for usando e criando seus próprios scripts, irei atualizando o artigo. Espero ter sido claro e objetivo, estou no aguardo por dúvidas, críticas e exemplos.
redpill
junho 22, 2008
denada 🙂
Helljawz
julho 6, 2008
Para um adm de sistema, seria interessante receber logs pelo celular. Poderia fazer isso com o crontab.
Alex
abril 15, 2009
Por que no motorola V3re só manda SMS com 18 caracteres?
pitombera
abril 21, 2009
Alex,
Sinceramente não sei te informar, se não me engano o v3 testado era um v3i. O script faz uma limitação de 160 caracteres, o que não chega nem perto dos 18 caracteres que você diz( quebras de linha? ). Em relação à questão do modelo, não creio que tenha algo com o problema já que o módulo usa comandos AT para o envio de mensagens, citei apenas por ser uma diferença do ambiente testado.
Seria interessante você passar mais informações( ambiente testado, o script usado, a forma como chamou o script, essas coisas )
[]’s
Alex
maio 9, 2009
Ambiente é simples instalei os requisitos minimos para funcionamento do script
estou utizando sem quebras de linha texto puro inclusive sem espaços ou acentuação
fiz conforme o procedimento.
ex de alguns testes
echo “Hostname:RoteadorPlanta4-Status:Down-IP:172.16.32.1” | perl script.pl 1591111111
nem manda a mensagem.
Quando quebro a mensagem para 18 caracteres a mensagem vai sem erro.
No host agora
[root@localhost plugins]# echo “Hostname:Tsors2k013-Status:Down” | perl moto.pl 1591111111
ok! connected and registered to network.
send.log
Sat May 9 00:49:16 2009 moto.pl warning ERROR in sending SMS:
[root@localhost plugins]# echo “Hostname:Tsors” | perl moto.pl 1591111111
O sms chega
Mostrando os warning: mais de 18 caracteres:
[root@localhost plugins]# echo “Hostname:Tsors2k004-Status:Down” | perl -W -U moto.pl 1591111111
ok! connected and registered to network.
Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/site_perl/5.8.8/Device/Gsm.pm line 772, line 1.
Mostrando os warnings: menos de 18 caracteres:
[root@localhost plugins]# echo “Hostname:Tsors2k” | perl -W -U moto.pl 1591111111
ok! connected and registered to network.
Não da erro algum.
Qualquer ajuda que vier ficarei agradecido.
Alex
maio 9, 2009
A por favor apague o n. do meu celular acabei colando sem querer, esqueci de dizer que estou utilizando Linux
[root@localhost ~]# lsmod
Module Size Used by
cdc_acm 18145 0
O módulo cdc_acm já estava disponivel.
[root@localhost ~]# cat /etc/redhat-release
CentOS release 5.3 (Final)
Kernel – 2.6.18
———–
[root@localhost ~]# lsusb
Bus 004 Device 002: ID 22b8:4902 Motorola PCS Triplet GSM Phone (AT)
Bus 004 Device 001: ID 0000:0000
Bus 005 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Alex
maio 15, 2009
Nenhuma dica?
pitombera
junho 7, 2009
Problema resolvido com Alex via e-mail, novo post será criado contando a solução utilizada.