El post que buscas se encuentra eliminado, pero este también te puede interesar

Mandá mensajes a Personal desde la Consola!

ACTUALIZACIÓN: Este script dejó de funcionar en Septiembre de 2013 debido a cambios en la página de Personal. Todavía no le encontré la vuelta para hacerlo andar otra vez.

Quiero compartir un script que hice para mandar mensajes a personal desde la consola. Está basado en el script de wetsa, pero modularizado y el código fue modificado en un 90%.

La forma de usarlo es ejecutando directamente el script y que nos salte el asistente o con parametros de la siguiente manera: ./personalsms.sh "Nombre" NÚMERO-SIN-0-NI-15 "Mensaje entre comillas"

Mandá mensajes a Personal desde la Consola!

Sin más vueltas, acá está:


#!/bin/bash
#=================
#personalsms.sh ||
#=================
#Este script permite enviar mensajes a celulares Personal, y los datos pueden ser ingresados tanto
#con un asistente como con parametros. #-------------------------------------------------------------------------------------------------------
#Autor: Grego Dadone - grego.dadone@gmail.com - facebook.com/gregod
#Licencia: GPL V2.0
#Basado en el script de wetsa@taringa.net.
#-------------------------------------------------------------------------------------------------------

#Variables que voy a usar como constantes
URL="http://sms2.personal.com.ar/Mensajes/sms.php"
#URL="http://sms.personal.com.ar/Mensajes/sms.php"

#Mensaje de advertencia en caso de haber parametros de mas o de menos
if [ $# -eq 1 ] || [ $# -eq 2 ] || [ $# -ge 4 ]; then
echo ''
echo 'La forma de usar parametros es personalsms "NOMBRE" NUMERO-SIN-0-NI-15 "Mensaje entre comillas"'
echo ''
exit
else
nombre=$1
numero=$2
mensaje=$3
fi

function verificar_parametros {
if [[ $nombre = '' ]] || [[ $numero = '' ]] || [[ $mensaje = '' ]]; then
obtener_nombre
obtener_numero
obtener_mensaje
else
echo ''
if [ ${#nombre} -gt 30 ]; then
echo 'El nombre no puede superar los 30 caracteres!'
nombre=''
obtener_nombre
fi
if [[ $(echo $numero|egrep 'b[0-9]{10}b') = '' ]]; then
echo 'El numero ingresado es incorrecto. Debe ingresar el numero sin 0 ni 15. Ejemplo 1145674321'
numero=''
obtener_numero
else
if [ ${numero:0:2} -eq 11 ]; then
codarea=11
cel=${numero:2}
else
codarea=${numero:0:4}
cel=${numero:4}
fi
fi
if [ `expr ${#nombre} + ${#mensaje}` -gt 110 ]; then
echo 'Entre el nombre y el mensaje superan los 110 caracteres!'
echo ''
mensaje=''
obtener_mensaje
fi
fi
}
function obtener_nombre {
until [ ${#nombre} -gt 0 ] && [ ${#nombre} -le 30 ]; do
echo 'Ingresá tu nombre:'
read nombre
if [ ${#nombre} -gt 30 ]; then
echo ''
echo 'El nombre no puede superar los 30 caracteres!!'
fi
echo ''
done
}
function obtener_numero {
until [ ${#numero} -eq 10 ]; do
echo 'Ingresá número destino sin 0 ni 15: (Ejemplo 3624567351)'
read numero
numero=$(echo $numero|egrep 'b[0-9]{10}b')
if [ ${#numero} -eq 0 ]; then
echo ''
echo 'El número ingresado no es valido!'
else
if [ ${numero:0:2} -eq 11 ]; then
codarea=11
cel=${numero:2}
else
codarea=${numero:0:4}
cel=${numero:4}
fi
fi
echo ''
done
}
function obtener_mensaje {
while [ `expr ${#nombre} + ${#mensaje}` -gt 110 ] || [ ${#mensaje} -eq 0 ]; do
echo 'Ingresá el mensaje a enviar:'
read mensaje
if [ `expr ${#nombre} + ${#mensaje}` -gt 110 ]; then
echo ''
echo 'Entre el mensaje y el nombre superan los 110 caracteres!!'
echo "El mensaje a enviar es: $(echo $mensaje|cut -c 1-`expr 110 - ${#nombre}`)"
op=0
while [ $op -eq 0 ]; do
echo ''
echo 'Seleccione una opcion'
echo '1) Enviar este mensaje'
echo '2) Volver a escribir'
echo '3) Salir'
read op
case $op in
1) mensaje=$(echo $mensaje|cut -c 1-`expr 110 - ${#nombre}`);;
2) mensaje='';;
3) exit;;
*) op=0;;
esac
done
fi
done
}
function obtener_captcha {
#esta variable contiene la direccion web del captcha
imagen=$(cat /tmp/sms.php | grep /Mensajes/tmp | awk -F'"' '{print$4}')
#Descargo el captcha
wget -q --referer=$URL --cookies=on --load-cookies=/tmp/cookie.txt --keep-session-cookies --save-cookies=/tmp/cookie.txt --output-document=/tmp/captcha.png $imagen
if [ $pos -ne 0 ]; then
kill pid $PID > /dev/null 2>&1 &
fi
#Muestro el captcha en pantalla
nohup display -title "Captcha" -resize 300% "/tmp/captcha.png" > /dev/null 2>&1 &
#Guarda el pid del ultimo proceso en segundo plano, en este caso el display del captcha
PID=$!
pos=$(( pos + 1 ))
while [ ${#captcha} -eq 0 ]; do
echo ''
echo "Ingrese el captcha:"
read captcha
captcha=$(echo $captcha|egrep 'b[0-9]{4}b')
done

#Envio los datos a travez de personal
POSTFIELDS='form_flag=&Snb='$numero'&subname='$numero'&sig='$nombre'&msgtext='$mensaje'&form=ht4&size=10&btn_send=SEND&historico=&Filename='$imagen'&FormValidar=validar&CODAREA='$codarea'&NRO='$cel'&DE_MESG_TXT='$nombre'&sizebox=''&MESG_TXT='$mensaje'&codigo='$captcha'&Enviar.x=13&Enviar.y=7&pantalla=';
wget -q --post-data="$POSTFIELDS" --cookies=on --keep-session-cookies --load-cookies=/tmp/cookie.txt --save-cookies=/tmp/cookie.txt --output-document=/tmp/sms.php $URL
}
function verificar_captcha {
while [[ $(cat /tmp/sms.php | grep "ingresado es incorrecto" ) != '' ]]; do
echo 'El código es incorrecto! Volve a ingresarlo!'
captcha=''
rm /tmp/captcha.png
obtener_captcha
done
echo ''
echo 'Mensaje enviado correctamente!'
kill pid $PID > /dev/null 2>&1 &
}
function borrar_tmp {
rm /tmp/captcha.png
rm /tmp/sms.php
rm /tmp/cookie.txt
kill pid $PID > /dev/null 2>&1 &
}
function menu_principal {
pos=0
mensaje=''
captcha=''
echo ''
echo 'Que desea hacer? Seleccione una opcion'
echo '1) Enviar otro mensaje al mismo numero'
echo '2) Cambiar numero de destino'
echo '3) Volver a cargar todos los datos'
echo '4) Salir'
read op
case $op in
1) echo "Tu nombre: $nombre";echo "Destino: $numero";
mensaje='';obtener_mensaje;obtener_captcha;verificar_captcha;menu_principal;;
2) numero='';obtener_numero;obtener_mensaje;obtener_captcha;verificar_captcha;menu_principal;;
3) nombre='';numero='';verificar_parametros;obtener_captcha;verificar_captcha;menu_principal;;
4) borrar_tmp;exit;;
*) menu_principal;;
esac
}

pos=0
verificar_parametros
wget -q --post-data='' --tries=80 --cookies=on --keep-session-cookies --save-cookies=/tmp/cookie.txt --output-document=/tmp/sms.php $URL
obtener_captcha
verificar_captcha
menu_principal


Lo pueden descargar desde acá también: http://dl.dropbox.com/u/70317638/personalsms.sh

Contesto dudas y doy soporte en los comentarios! Un saludo!

16 comentarios - Mandá mensajes a Personal desde la Consola!

hllamal +1
mañana regreso con pirulos.
Stiif +2
La versión para consola de la página web

+10
facu_04 +1
che pero osea es como enviar mensajes desde la pagina de personal verdad?
GregoDadone +1
Si loco, más rápido incluso, todo buen linuxero preferiría este método a abrir la página!
facu_04 +1
@GregoDadone re copado! a favoritos y lo pruebo cuando termine de bajar sambayon
los3 +1
Hola man, me tira "numero no valido", probe poner el numero con 11+ minumero, ej 1112345678
y sin el 11 ej 12345678 pero no hay caso...
GregoDadone
Esta tarde cuando esté en mi casa te prometo que reviso y te digo si tiene algún problema.
GregoDadone
Acá me funciona perfecto tanto en ArchLinux como en Ubuntu, tanto a números de Buenos Aires como del interior, si querés mandame una screen del error por MP así lo veo bien.
Joaquinaiviat
Hola. Es que en la función «obtener_numero» dice:

until [ ${#numero} -eq 10 ]; do

El número debe ser de 10 dígitos (como pusiste en el ejemplo 1123456789), no sé si hay otros teléfono con más o menos.
Joaquinaiviat +1
Buen post!

Faltaría hacerle un contador de caracteres para no pasarse
Hacele una interfaz en zenity
GregoDadone +1
Jaja está jodido lo del contador de caracteres en tiempo real en bash
Lo estoy trabajando en Java actualmente, así que próximamente se viene con GUI directo! Lo meto a github y ahí sí le agregamos agenda de contactos y cosas así
Joaquinaiviat
@GregoDadone
Bien, no se nada de programación más que algunos scripts sencillos en bash. Solo era una sugerencia

Ya veremos el trabajo terminado. Gracias por compartir!
Rombus
@GregoDadone Actualizanos con el estado del cliente java!
cibercordoba +1
Aguante linux la concha de su madre!
bara12_ar
no me sale la ventana con el captcha :/
bara12_ar
@GregoDadone probe en otras pc y tampoco, parece que el problema esta la pedida de captcha, ahora no me deja hacerle boton derecho en la imagen como para poner inspeccionar elemento y ver de donde lo saca ahora
GregoDadone
@bara12_ar Che efectivamente Personal cambió su página de sms, así que voy a tener que revisar el código, seguramente necesita pequeños ajustes nomás. Te vuelvo a responder cuando lo arregle.
GregoDadone
bara12_ar
gracias capo! una barbaridad como funciona
chuckybell
viejo sera que cambio de nuevo la pagina de personal me tira error de url " missing URL"
GregoDadone +2
Sí hermano, cambiaron... Todavía no logro amañarme para hacerlo andar, si puedo en unos días te aviso!