Envio de mensajes SMS via HTTP GET desde Bash Script

El siguiente script en Bash envía como parámetros el número de teléfono y texto de mensaje por método GET a un servicio de Gateway SMS que estará a la escucha en un IP y Puerto especifico, el cual al recibir la petición con dichos parámetros realizara el envió del mensaje de texto SMS, al número indicado. Ideal para realizar envíos de SMS masivos, desatendidos, programados con anticipación, etc…

[sourcecode language="bash"]
#!/bin/bash
# Bash script envio de mensajes via HTTP GET
# Leninmhs

texto="Esto es un mensaje sms masivo enviado desde tu consola linux";
texto="${texto// /%20}";

for i in $(cat /home/leninmhs/telefonos.csv); do
    (( contador_sms++ ))
    curl -X GET "http://192.168.1.100:9090/sendsms?phone=+58$i&text=$texto";
    sleep 1
    echo "SMS N°: $contador_sms enviado a: $i en: $(date +%Y-%m-%d:%H:%M:%S)" >> sms.log
done
[/sourcecode]

Explicación del código fuente

Nota: La numeración presentada a continuación corresponde a las lineas de código mostradas anteriormente.

1, 2 y 3: Le indicamos al programa que usaremos el interprete de bash y comentarios del programa.

5 y 6:  Almacenamos en una variable el texto del mensaje que enviaremos y en el caso del gateway sms que estoy usando no aceptaba los espacios en blanco por lo que los tuve que sustituir por su representación en caracteres en la linea 6.

8: Inicio un bucle leyendo el archivo telefonos.csv e iterando en cada linea del mismo. Este archivo contiene un número de teléfono en cada linea.

9: Inicio un contador que incrementara en cada iteración del FOR

10: Uso el programa CURL para indicar que realizare una petición de tipo GET al IP y Puerto del Gateway SMS pasándole como parámetro $i que es el número de teléfono de la linea en la que me encuentro iterando y el texto que le enviará. Deberán estar en la misma red para que se vean la estación de trabajo o servidor que realiza el envió como el servicio que estará a la escucha. Nótese que le pongo +58 (código internacional de mi país Venezuela) al número de teléfono.

11: Indico al programa que espere 1 segundo antes de continuar, comiencen probando con mas segundos.

12: Escribo en un archivo log de nombre sms.log por cada linea de la iteración la cantidad de mensajes que he enviado, el número al que envié y la fecha completa. Pueden monitorear el progreso del envió masivo con $tail -f sms.log

Sobre el GateWay SMS

Muchas alternativas y soluciones de GateWay SMS existen, las hay por hardware es decir soluciones físicas con todo integrado incluso posibilidad de poseer múltiples lineas telefónicas por las cuales realizar el envió.  Por software con excelentes soluciones basadas en software libre como http://www.kannel.org. Incluso hoy en día hay aplicaciones en Android muy practicas y sencillas que harán de tu celular una excelente solución para el envió de mensajes de textos desde tu estación de trabajo o servidor basado en Linux.

GateWay SMS de Android

ATENCIÓN: Si deseas usar el servicio de enviar mensajes de texto sms masivos en Venezuela tengo disponible el servicio web inSMS para el envío de mensajes de texto.

16 comentarios en “Envio de mensajes SMS via HTTP GET desde Bash Script”

  1. Estoy intentnado usar ese mismo gateway de android pero que reciba comandos a traves de pop3, sin embargo no me funciona, toma el numero del correo que envio pero el cuerpo del mensaje llega es javax.mail.internet.mimemultipart@… en ves del mensaje que yo escribi, agradezco si tienes alguna idea.

    1. Hola no lo he usado recibiendo desde correo, haré alguna prueba el fin de semana y te comentó, sin embargo juega en los settings con el long SMS y el prevent cpu sleep que recuerdo a veces tuve intercambiar valores, saludos

  2. Voy un poco tarde, pero he de darte las gracias por darme a conocer esta aplicación.
    Actualmente tengo implementado un sistema en java y otro en python para poder enviar sms de forma predeterminada.
    También descubrí Servers Ultimate Pro, que también tiene un sms gateway sms, pero la aplicación es de pago, pero permite la comunicación sobre https.
    Por otro lado, para enviar sms desde pop tienes que enviar el cuerpo del mensaje en texto plano, yo lo tengo sobre una cuenta de correo con roundcube.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *