# script en perl para enviar mensajes cortos # a tfnos gsm (mas conocidos como sms 8-)) # URL: http://linuxsms.sourceforge.net # email: thesumidero@yahoo.com use Lang:Spanish_sucks; ### PRINCIPAL ### Este es mi 2º script "decente" en Perl (el 1º fue bfl), creado en unas horas de algunas tardes aburridas. Como no encontraba en linux un buen programa para enviar sms, decidi crear mi propio script en Perl (por supuesto) 8-). Seguramente el script contendra gran cantidad de fallos, errores y mala programacion pero bueno, tened en cuenta que no soy un guru del Perl ;) ### USO ### => Linea de comandos larga y clasica (CMDLINE=0 en el archivo de configuracion) Ejemplo usando la agenda (nombre:alex): ./linuxsms.pl -name:alex -server:navegalia -sms:"esto es el texto a enviar" Ejemplo usando un numero (649111222): ./linuxsms.pl -number:649111222 -server:navegalia -sms:"esto es el texto a enviar" Ejemplo usando un numero y un prefijo internacional (34 649111222): ./linuxsms.pl -prefix:34 -number:649111222 -server:icicampus -sms:"esto es el texto a enviar" => Linea de comandos corta (por defecto) y moderna (CMDLINE=1 en el archivo de configuracion) ATENCION, esta caracteristica esta en pruebas y es algo inestable, si te da algun problema, por favor usa la clasica. Tiene bastantes limitaciones con respecto a la antigua, quizas la mas importante es que el mensaje no se puede leer desde la entrada standard y que la opcion de usar el servidor por defecto del archivo de configuracion no funciona. Las opciones extra (-z, -debug) tienen que ser usadas como ultimos argumentos, porque los 3 primeros estan reservados. Ejemplo usando la agenda (nombre:alex): ./linuxsms.pl alex navegalia "esto es el texto a enviar" Ejemplo usando un numero (649111222): ./linuxsms.pl 649111222 navegalia "esto es el texto a enviar" Ejemplo usando un numero y un prefijo internacional (34 649111222): ./linuxsms.pl 34 649111222 icicampus "esto es el texto a enviar" Ejemplo usando la entrada standard /usr/games/fortune | ./linuxsms 34 649111222 icicampus Confuso / Necesitas mas ayuda / donde esta la pagina man 8-) ? ./linuxsms.pl -h ### Archivos de configuracion ### En todos los archivos, las lineas que comiencen por un '#' son comentarios y se ignoran de cara a la ejecucion del programa. __ATENCION__ : TODOS LOS FICHEROS DEBEN TENER UNA LINEA EN BLANCO AL FINAL ============> Agenda ($HOME/.linuxsms/addressbook) <================== La estructura es bastante sencilla como indican los ejemplos, en cada linea debemos meter: nombre:prefijo:numero:servidor_por_defecto Se distinguen mayusculas de minusculas. Prefijo es el prefijo internacional: minombre:34:641234567 El prefijo se puede omitir, por ejemplo: minombre::641234567 (esto asumira el prefijo por defecto de la configuracion principal) El servidor por defecto, si existe, sera el usado al para enviar los sms a esa persona. Esta opcion solo sera ignorada si se indica un servidor desde la linea de comandos. =========> Cuentas / Passwords ($HOME/.linuxsms/password) <=========== Al igual que el anterior y del mismo modo que aparece en los ejemplos, en cada linea debemos indicar: nombre_del_servidor:alias:clave Se distinguen mayusculas de minusculas, el nombre del servidor debe ser uno de los que usa el programa y el alias/clave son evidentemente las que registraste previamente en tu cuenta de la web del servidor. =======> Configuracion general ($HOME/.linuxsms/linuxsmsrc) <========= En este archivo la sintaxis es VARIABLE=VALOR, a continuacion una explicacion de cada una: LANG: puede tomar el valor de ES o EN, por ahora para lo unico que se usa es para abreviar el sms con unos diccionarios. MYNUMBER: nuestro numero de telefono, en algunos servidores es posible enviar un numero de telefono remitente (no se incluye el prefijo internacional). SERVER: es el servidor por defecto a usar si no le indicamos ninguno en la linea de comandos. Debe existir soporte para dicho servidor en el programa. Esta opcion sera ignorada en caso de que se indique un servidor en la linea de comandos o que haya un servidor por defecto para esa entrada indicado en la agenda. PREFIX: prefijo por defecto a usar en servidores internacionales, por ejemplo si vas a enviar el sms a españa, indica aqui un 34 CMDLINE: puede valer 1 o 0. La antigua linea de comandos (0) era un poco mas larga e incomoda, la nueva (1) nos evita teclear bastantes opciones. ANSI: puede valer YES o NO, si lo activamos (YES) el script sacara la salida por pantalla con colores ANSI (el terminal debe soportarlos). SIGNATURE: esto trabaja en conjunto con el parametro -sig, si aqui indicamos por ejemplo 'SIGNATURE= - mi firma', y al ejecutar añadimos -sig, lo que hara sera añadir al final del sms la cadena ' - mi firma'. ALWAYS_SIGNATURE: si ponemos esta opcion en YES, la firma de SIGNATURE se añadira siempre al final. SECURITY: por defecto es YES, si lo cambiamos a NO, podremos ejecutar el script como root, pero atencion, esto puede causar un gran agujero de seguridad. SERVER_LIST: por defecto es NORMAL, si lo cambiamos a FULL, en la lista de los servidores nos dara mas informacion (donde registrarnos). PROXY: puedes configurar aqui el host y puerto de tu proxy, por ejemplo: PROXY=miproxy.com:8080 NOTA!!!: el soporte de proxy es inestable y experimental, por ahora no existen opciones avanzadas (autentificacion y otros). LOG: por defecto es NO, cambiandolo a YES guarda un log de todos los sms que han sido enviados con exito. =========> Diccionario ($HOME/.linuxsms/dict) <=========== Se pueden añadir nuevas palabras escribiendo nuevas lineas con la siguiente estructura: palabra_a_buscar:palabra_para_reemplazo: uno:1 por:x menos:- te:t No se distinguen mayusculas de minusculas. ### FASQ: (Respuestas a Frecuentes Preguntas Estupidas) ### ...la mayoria, porque no has leido la jodida ayuda (-h) + Como puedo listar el contenido de la agenda ? - ./linuxsms -addressbook + Como puedo ver los servidores soportados ? - ./linuxsms -server + Porque el script no funciona como root ? - Porque no hacen falta privilegios de root para usar el script ;) ...ademas, has pensado la posibilidad de que haya incluido en el script una oscura opcion secreta megamalefica que haga un 'rm -rf /' ... seguro que la mayoria ni se molesta en leer el codigo fuente... + El script no envia sms con espacios en el texto! (ejemplo: -sms:esto es el texto a enviar) - Has omitido las comillas ?, CLARO QUE SI, porque si hubieras leido la ayuda, sabrias que deberias escribirlo asi: -sms:"esto es el texto a enviar" + Existe alguna funcion para comprobar/actualizar el script a versiones mas modernas ? - Por favor, ACOSTUMBRATE a leer la ayuda ;-) la opcion es '-update' + Como creo una cuenta para los servidores de registro ? - En la pagina del proveedor/servidor en el que quieras registrarte esta toda la informacion bien clara, asi que leela. Si no lo encuentras, vuelve a leer. Yo (el autor) me dedico a hacer scripts y no puedo enseñarte "como debes manejarte en Internet". + Que novedades o cambios hay en la version xxx del script ? - Lee el archivo 'CHANGES'. ### FAQ: (Respuestas a Preguntas Frecuentes) ### + El script no funciona, da el error: "Perl v5.0.0 required--this is only vx.x.x, stopped at ..." - Necesitas una version de Perl >= 5.0 + Donde esta el fichero de configuracion principal ? - en $HOME/.linuxsms/ encontraras el fichero 'linuxsmsrc' 8-) ... en versiones anteriores a 0.32 era '.linuxsmsrc' + Donde esta el fichero que contiene la agenda ? - en $HOME/.linuxsms/ encontraras el fichero 'addressbook' 8-) ... en versiones anteriores a 0.32 era '.addressbook' + Donde esta el fichero de passwords ? - en $HOME/.linuxsms/ encontraras el fichero 'password' 8-) ... en versiones anteriores a 0.32 era '.password' + Tienes pensado añadir un entorno grafico mas amigable al script ? - Igor Castang implemento una en Perl Tk ya hace tiempo, que funcionaba para las versiones < 0.3x. Recientemente Kali la ha modificado para que funcione con las ultimas versiones. Puedes obtenerla en la pagina principal (linuxsms.sourceforge.net). Yo (z0mbie) no programo ni mantengo esta GUI, por tanto y a no ser que sea para colaborar en ella por vuestra cuenta como hicieron sus autores, por favor no me pregunteis por nuevas versiones o cualquier otra cosa relacionada con la GUI, ya que iran directamente a /dev/null ;) + Mi terminal no soporta codigos de color ANSI || tus colores son una mierda - En el fichero de configuracion principal, cambia el valor de la linea: ANSI=YES por otro valor diferente (ejemplo: "ANSI=NUNCA") 8-) Por defecto y compatibilidad con terminales antiguos, el soporte de colores con codigos ANSI esta desactivado. + He encontrado un buen servidor gateway para enviar sms que no se encuentra en el script, puedes añadirlo ? - Enviame un email con la direccion del servidor y vere lo que puedo hacer }:) + Puedes decirme el secreto o metodo que usas para añadir servidores ? - No hay ningun secreto, generalmente cargo un sniffer, para capturar todos los paquetes, luego cargo mi navegador y voy a un servidor que ofrezca servicios de sms, envio un sms de prueba y cierro la conexion. Mas tarde examino el fichero de captura del sniffer para analizar los datos (formularios, cabeceras...) y finalmente intento reproducir en una rutina el mismo metodo. Si estas interesado, echa un vistazo en el script a la seccion de servidores. Frecuentemente tambien compruebo la lista de servidores del 'winsms' por si hay algun servidor nuevo interesante y rapido. + Puedes añadir la opcion 'xxxx' al script ? - Puede que si, puede que no, enviame un email con tus sugerencias... + Como funciona el DEBUG ? - Activalo con '-debug' y vuelca la STDERR por ejemplo a un archivo: linuxsms.pl -name:nombre -server:servidor -sms:"test" -debug 2> debug.txt El DEBUG sera grabado en el archivo debug.txt Desde la version v0.20 ha desparecido en el archivo de configuracion principal la variable que lo activaba (DEBUG=YES||NO), ya que resulta mas comodo hacerlo en la linea de comandos. + Como puedo añadir un simbolo de '&' o '!' en el sms ?, el shell me da el siguiente error al teclear ./linuxsms alex "vaya admiracion!": bash: !": event not found - Añade el sms entre simbolos de comillas simples, por ejemplo: ./linuxsms alex 'un simbolo & y el de admiracion!' + Puedo enviar la salida de un comando a linuxsms ? - Si, linuxsms puede leer el sms desde STDIN, solo haz lo siguiente: /usr/games/fortune | linuxsms numero servidor linuxsms numero servidor (escribe el sms y cuando acabes teclea Crtl+D) + Mas informacion, donde puedo hacer mis consultas, etc... - Si no te llega con la documentacion puedes ponerte en contacto con el autor via email (thesumidero@yahoo.com). Asi mismo hay una lista de correo / foro donde puedes hacer tus consultas/sugerencias/comentarios, puedes leerla online desde web (http://groups.yahoo.com/group/linuxsms) o bien subscribirte y recibirla en tu email (manda un mensaje a: linuxsms-subscribe@yahoogroups.com) ### CODIGOS DE SALIDA ### Si estas pensando en llamar a este script desde otro y necesitas que te devuelva un valor de salida (error?) al ejecutarse, aqui esta lo que buscas: 0 - sms enviado correctamente 1 - sms no enviado correctamente 2 - sms no enviado correctamente (los webmasters han cambiado el metodo) ### SERVIDORES ### Con registro (suelen ser los mas fiables): everyday - 124 caracteres && 03 SMS / dia - solo España no soporta flash registra la cuenta en http://www.everyday.com solo puedes enviar sms si cuentas con puntos para conseguir puntos usa la opcion -credits (un maximo de 5 veces cada 24 horas, con un intervalo minimo de 30 min entre cada vez) everyday_fr - 129 caracteres && 03 SMS / dia - Internacional pero no envia a españa. no soporta flash registra la cuenta en http://www.fr.everyday.com solo puedes enviar sms si cuentas con puntos firstwap - 160 caracteres && 25 SMS / mes - Internacional soporta flash registra la cuetna en http://www.1rstwap.com en españa (34) este servidor es totalmente inestable lycos - 89 caracteres && 1 sms / dia - Internacional no soporta flash registra la cuenta en http://www.lycos.es orangedk - 120 caracteres && sin limite - Solo Dinamarca no soporta flash registra la cuenta en http://myorange.dk textamerica - 120 caracteres && 5 sms dia - solo USA no soporta flash registra la cuenta en http://www.textamerica.com/ smsac - 120 caracteres && 2 sms dia - Internacional no soporta flash registra la cuenta en http://www.sms.ac no envia a (AMENA) españa e-zones - 480 caracteres && limite por creditos - solo Eslovakia soporta flash registra la cuenta en http://www.e-zones.sk sunrise - 130 caracteres && 300 sms / mes - Internacional no soporta flash el registro esta restringido a los usuarios de sunrise aliceadsl - 160 caracteres && 10 sms / dia - solo Italia no soporta flash registra la cuenta en http://www.aliceadsl.it oxygen - 140 caracteres && 20 sms / semana - solo Irlanda no soporta flash registra la cuenta en http://www.oxygen.ie vola - 160 caracteres && sin limite - solo Italia no soporta flash registra la cuenta en http://www.vola.it/ Sin registro (no suelen tener limite, pero es bastante comun que esten saturados). ### RESOLUCION DE PROBLEMAS ### + Si el script contesta: "sms NOT sent ok!" en la mayoria de los casos debes esperar algunos minutos porque el servidor esta saturado y no acepta tu peticion. + Si el script contesta: "you waste the limit of sms/day (x) in this server" debes esperar 24 horas para enviar otro/s (x) sms en este servidor ;). + Si el script contesta: "webmasters of server change method" el soporte para este servidor ha sido cambiado, por favor enviame un email para intentar arreglarlo. + Por supuesto, si tienes alguno de estos 3 problemas anteriores, puedes intentar enviar el sms por medio de otro servidor. ### SALUDOS ### + Azrael: el autor de 'winsms', el hermano mayor de 'linuxsms' 8-). Una de las razones por las que he escrito este script es porque me gustaba su programa pero no tengo windows X-) + Manty: por los paquetes deb, todos los tests que hace, la gran cantidad de bugs que encuentra ademas de las sugerencias que aporta para mejorarlo. + Sepio: por los paquetes rpm. + Felix Knecht && Igor Castang && Kali por las GUI's en Perl Tk + Marcial Atienza por la GUI en Java + Nuno Tavares por la GUI para GNOME 2.0 + Jan Sorensen por el script mail2sms