|
|
Linux con mando a distancia via SMS
(24023 lectures)
Por Carles Pina i Estany
cpina
(http://pinux.info)
Creado el 15/03/2003 00:51 modificado el 15/03/2003 00:51
|
Con este artículo veremos como podemos controlar a Linux -conectar módem, desconectar, un ping, etc.- mediante SMS, tan solo usando un móvil conectado a Linux y soportado por gnokii. Una buena manera de revivir un viejo Nokia 5110, usando su cable y unos scripts en Bash... | Pagina1/1 |
Para eso usaremos las herramientas de gnokii. Yo estoy usando la versión del CVS de hace meses, pero debería fácil adaptarlo a versiones más recientes.
Como siempre, explicaré como lo tengo montado yo, con unos scripts simples en Bash. Lo importante es la idea, después podéis adaptarlo/hacer crecer el sistema.
Se supone que tenemos un móvil, compatible con gnokii conectado al ordenador. Yo antes tenia tarifa "plana" a partir de las 3 de la tarde, así que lo dejaba desconectado y a media mañana si necesitaba alguna cosa de mi ordenador le enviaba un SMS para que conectase, y seguidamente él me contestaba con la IP. También le puedo decir de manera remota que desconecte, o sencillamente un "ping" para ver que todo está en orden. Evidentemente él nos contestará "pong", "de acuerdo Sr." o algun SMS para confirmar la recepción.
Lo hacemos todo mediante SMS de móvil a móvil, sin pasar por servicios de operadoras de envio de e-mails o servicios gratuitos de las operadoras ya que esos pueden tardar/no llegar/etc. más fácilmente que haciendolo directamente nosotros con el móvil.
Para saber que gnokii nos lo ha reconocido podemos hacer:
gnokii --monitor
Y nos saldrá algo así:
GNOKII Version 0.5.0pre
Entering monitor mode...
RFLevel: 4
Battery: 4
Power Source: AC/DC
SIM: Used 10, Free 190
FD: Used 0, Free 20
SMS Messages: Unread 0, Number 0
Network: Airtel GSM 900-Spain (Spain), LAC: 697a, CellID: 6421
CALL0: IDLE
CALL1: IDLE
También deberíamos ver si podemos enviar SMS sin problemas:
echo "hola bon dia" | gnokii --sendsms $NUM_TEL
Si no nos funciona bien, es posible que tengamos que modificar el puerto serie o bien el modelo de teléfono en /etc/gnokiirc
En el paquete de utilidades de gnokii, hay una utilidad que se llama smsd. Ese programa actúa en modo "daemon" y hace dos cosas:
- Se queda monitoreando un directorio y espera que aparezca un fichero, con un número de teléfono a la primera línea y un texto a la segunda. Cuando aparece, lo envia y elimina el fichero.
- También, va mirando si llega un SMS al móvil. Cuando llega uno, le pasa como argumento el número origen y por la entrada estándard el texto.
Llamámos a smsd de esa forma:
smsd -m file -c /var/tmp/smsd/ -u /root/action3
Eso es, trabajaremos mediante ficheros (puede hacerlo también mediante MySql o postgresql). El directorio que monitorea es /var/tmp/smsd. Cuando llega un SMS nuevo ejecuta /root/action3 (¡Ojo! Por seguridad no debería ejecutarse como root todo eso).
Pasemos a ver el script action3 el cual es:
#!/bin/bash
#recordad de poner el permiso de ejecución a este fichero
PHONE="+346xyabcdef"
#aquí ponemos el único teléfono válido al que le haremos caso
read ENTRADA
#leemos de la entrada estándard el texto que nos dejan
if [ "$1" = "$PHONE" ]
then
#el teléfono ha sido válido
case "$ENTRADA" in
#comprobamos la orden que nos han enviado
Interon)
echo "$(date): Correcte. -$ENTRADA-" >> /var/log/sms
#lo guardamos a un log
pon autowanadoo
#y conectamos a Internet
;;
Interoff)
echo "$(date): Correcte. -$ENTRADA-" >> /var/log/sms
#lo guardamos a un log
echo "$PHONE" > /var/tmp/smsd/enviar.$$
echo "Ordre rebuda. Ara desconecto. Que vagi bee" >> /var/tmp/smsd/enviar.$$
#y formamos el fichero con el formato ya visto para
#que smsd lo vea y nos envie que hemos desconectado
poff
;;
ping)
echo "$(date): Correcte. -$ENTRADA-" >> /var/log/sms
#haemos el log...
echo "$PHONE" > /var/tmp/smsd/enviar.$$
echo "pong" >> /var/tmp/smsd/enviar.$$
#y enviamos "pong"
;;
*)
echo "$(date): $1. comanda erronia: -$ENTRADA- " >> /var/log/sms
#ha llegado un comando que no es ninguno de los anteriores
;;
esac
else
#Teléfono inválido! lo guardamos a un log...
echo "$(date): ERROR Tlf invalid $1:$ENTRADA" >> /var/log/sms
fi
Creo que está todo claro con los comentarios del código fuente. Lo que hace es ejecutar las órdenes, verificando que el origen sea el que hemos puesto. Y guardamos un log de nuestras acciones.
Un detalle, cuando hagamos desde la consola "pon wanadoo" no queremos que nos mande el SMS con la IP. En cambio, cuando el script ejecuta "pon autowanadoo" queremos que sí que envie la IP. Para conseguir eso, en /etc/ppp/peers/autowanadoo ponemos una línea que ponga: "linkname auto". Entonces, en /etc/ppp/ip-up.d/ hacemos un fichero llamado sms (y con permisos de ejecución), que siempre se ejecutará (nos conectemos con wanadoo o autowanadoo) y tendrá este contenido:
#!/bin/bash
if [ "$LINKNAME" = "auto" ]
then
echo "6xyabcdef" > /var/tmp/smsd/enviar.$$
echo "Hola Carles. Tinc la IP: $IPLOCAL . Sort." >> /var/tmp/smsd/enviar.$$
fi
Es decir, comprobamos que el LINKNAME sea auto, y si lo es enviamos el SMS. Si no lo es, no hacemos nada.
Y eso es todo. Podemos añadir más potencia al script (que nos puedan enviar comandos más completos) pero para lo que necesitaba ya me bastaba con esto visto aqui.
Añadir, que aparte de gnokii hay otro software, llamado gammu que depende de qué operaciones tengamos que hacer con el móvil nos puede ser más útil (p. ej. para hacer backups, gnokii me dió algun problema y gammu no).
PD: si queremos hacer lo mismo pero usando el servicio de e-mail de las operadores, en Bulma también tenemos un fantástico artículo. Gracias Victor por escribirlo (he intentado no pisar el título, primero habia puesto como el suyo). |
|
|
|
|
|
Comentarios Es posible que se hayan omitido algunos comentarios considerados poco constructivos
| 1. Re: Linux con mando a distancia via SMS (15/03/2003 10:46, #12815) Por: El cobarde anónimo |
Yo cambiaría:
echo "$PHONE" > /var/tmp/smsd/enviar.$$
echo "pong" >> /var/tmp/smsd/enviar.$$
por:
echo -e "$PHONE\\npong" > /var/tmp/smsd/enviar.$$
| No es pot respondre |
2. Re: Linux con mando a distancia via SMS (15/03/2003 21:22, #12828) Por: cpina (http://pinux.info) |
| Cierto; se me olvida el -e :-) Gracias! | No es pot respondre |
|
3. Re: Linux con mando a distancia via SMS (16/03/2003 04:21, #12837) Por: ViCToRy (http://piscue.com) |
| Gracias por no pisar el título :P | No es pot respondre |
4. Re: Linux con mando a distancia via SMS (16/03/2003 13:34, #12843) Por: El cobarde anónimo |
| Alguien sabe si se podria encender el ordenador mandando un mesaje o llamando al movil conectado al pc( teniendo activada en la bios la opcion de encendido por ring)? | No es pot respondre |
5. Re: Linux con mando a distancia via SMS (16/03/2003 17:56, #12850) Por: cpina (http://pinux.info) |
| Hola,
Ya sabes que siempre podrias hacer "encendido automático" según la hora con temporizadores que hay (digitales o angalógicos).
El tema de la Bios necesita conectar RJ11 y que yo sepa ningún móvil te lo da (ni con el cable, etc.) lo que puedes hacer es buscar un "módem GSM" (no sé si se llaman así exactamente), són unos módems que les pones una tarjeta GSM y te sale un conector RJ11 normal y corriente. En un principio con esos aparatos se deberia poder hacer. No he mirado cuanto valen, parece que por 200Euros o un poco más hay, pero ya te digo, hablo de oidas.
Gracias!
PD: esos aparatos algunos dan una salida serie para poder enviar SMS, en el poryecto Alamin lo usan. | No es pot respondre |
6. Re: Linux con mando a distancia via SMS (10/03/2005 14:56, #25616) Por: mariano |
| He visto que algunas placas base tienen dos pines que en el manual explica que si los unis, se enciende la PC. No estoy hablando del power, aunque se podria usar ese conector tambien.
Es el que despierta la PC en caso que este hibernando, via hard.
Cuestion de adaptar el conversor de tension rs232 para sacarle un par de cables que entren en la PC...
m | No es pot respondre |
|
7. Re: Linux con mando a distancia via SMS (25/03/2003 21:44, #13151) Por: El cobarde anónimo (http://www.elpauer.org) |
Jo tinc tarifa plana 24h amb Ono (cable), però sense IP estàtica.
El que he fet ha sigut modificar l'script del dimoni DHCP per a què quan canvia la IP de l'ordinador m'envie un e-mail. Per a no haver d'utilitzar el sendmail, postfix, etc (que són massa "pesats" per al que volia), he fet servir un programeta anomenat sendEmail (http://freshmeat.net/projects/sendemail/?topic_id=28).
Només cal afegir aquesta línia
echo `/sbin/ifconfig | grep -i inet` | /usr/bin/sendEmail -f email_remitent@proveidor.com -
t email_destinatari@altreproveidor.com -u IP.del.servidor -s servidor_smtp
al final de la secció que diu:
if [ "x$new_ip_address" != "x$alias_ip_address" ] && [ "x$alias_ip_address" !=
x ];
(en realitat eixe no és el lloc correcte, perquè envia e-mails sense haver canviat la IP, però funciona prou bé i ho vaig fer en 5 minuts; si algú troba un lloc millor, que avise).
On servidor_smtp és p. ex. smtp.ono.com. | No es pot respondre |
8. Re: Linux con mando a distancia via SMS (01/04/2003 14:40, #13331) Por: Uno más |
Tens un script que fa ping a la teva IP, y si no respón es perque hi ha un conflicte. O bé has perdut el servici, o bé te l'han canviada. Haurás de filtrar que et diga si esta viu/mort i enviar un missatge si està mort.
Aprofita? | No es pot respondre |
|
|
9. Re: Linux con mando a distancia via SMS (07/08/2006 00:36, #34191) Por: iyaski |
| hola cobarde anonimo, necesito tu ayuda, me puedes mandar un mail a mi correo y te cuento iyaski@hotmail.com | No es pot respondre |
|
10. Re: Linux con mando a distancia via SMS (06/07/2003 20:02, #15710) Por: Gringo |
| ..Y q es lo q necesito para conectar el telefono movil al PC?? | No es pot respondre |
11. Re: Linux con mando a distancia via SMS (24/05/2004 14:04, #21426) Por: cpina (http://pinux.info) |
| Normalmente un cable, en algunos casos se puede hacer con infrarojos pero no lo he probado. | No es pot respondre |
|
12. problema GNOKii NOKIA 5190 (19/03/2005 05:55, #25761) Por: antraxa |
deseo realizar el mismo proyecto que muestra esta pagina instale Gnokii 0.5.8, tengo red hat 9.0 (kernel 2.4), un nokia 5190, ya eh checado los telefonos con los que funciona gnokii y mi telefono si aparece entre ellos.
conecto mi tel a la pc (cable DAU-9P MBUS/FBUS) por el puerto serial, ejecuto el comando gnokii --monitor, pero no obtengo respuesta nunca, ya revise el archivo .gnokiirc que se encuentra en mi carpeta de usuario y parece que todo esta correcto. aqui anexo el contenido del archivo:
# This is a sample ~/.gnokiirc file. Copy it into your
# home directory and name it .gnokiirc.
#
[global]
# Set port to the physical serial port used to connect to your phone.
# Linux version is:
port = /dev/ttyS0
# For MacOSX you will need something like:
# port = /dev/cu.USA28X1P1.1
#
# Use this setting also for the Bluetooth connection:
# port = aa:bb:cc:dd:ee:ff
# Set model to the model number of your phone
model = 5190
# Initlength controls the number of characters sent to the
# phone during initialisation. You can either set it to
# the word "default" or a positive integer.
#
# You can try setting this value if you want to connect
# to the phone quicker. If you've never noticed the
# connection to be slow, it is suggested that you
# leave this alone. Read the initialisation code in fbus-xxxx
# to understand what this changes if you're curious.
initlength = default
# The type of the connection, for IR set this to infrared or irda.
# For the nk6110 driver only infrared is valid for the IrDA connection.
# See Docs/gnokii-ir-howto for more detailes on this.
# If you have 6210/6250/7110 phone and dau9p cable (the one you can
# use with 6100 series and cannot use hardware modem from the phone)
# you may want to use 'dau9p' value to get faster initialization.
# If you use dlr3 or dlr3p cable for nokia phones in FBUS mode (ie.
# you don't use model = AT) you may want to use 'dlr3p' value here.
# Note that it is recommended and currently the best way to use this
# cable with nk6510 driver.
connection = serial
# Set bindir to point to the location of the various gnokii binaries.
# In particular ensure that mgnokiidev is in this location, with
# permissions 4750, owned by root, group gnokii. Ensure you
# are in the gnokii group and that the group exists...
bindir = /usr/sbin
# Set this to 'yes' if you want gnokii to set and check the lock file in
# /var/lock directory. It avoids potential conflicts with other serial
# port software (eg. minicom). If you have wrong permissions for the
# directory, a warning will be generated. If you don't want a lockfile, set
# it to 'no'.
use_locking = yes
# Baudrate to use on serial port connections.
# Currently used only by models AT and BIP/CIMD. Defaults to 19200.
#serial_baudrate = 19200
serial_baudrate = 9600
# Force waiting after each send character the specified usec time.
# Value -1 forces the fastest 'block' writing,
# value 0 writes each character separately without any explicite waiting,
# other positive values specify the appropriate 1/1000000 sec delaying.
# Siemens M20 requires at least "1"! FIXME: Model-driven autodetection
#serial_write_usleep = 10000
# Force serial port handshaking mode, useful primarily for "AT" model.
# Gnokii "AT" model uses software handshake by default.
# Possible values: hardware (RTS/CTS - 7 wires) or software (XON/XOFF - 3 wires)
#handshake = software
# If defined (not commented out by '#') it will quit Gnokii anytime
# when DCD line will drop.
#require_dcd = 1
# If you are using a bluetooth connection, you can specify the rfcomm
# channel number here. Default value is 1.
#rfcomm_channel = 1
# Run the specified script(s) right after opening and initializing the device
# and before any communucation (right before closing for disconnect_script).
# You may find handy to use it to connect your modem to SMS Center
# when using BIP or CIMD protocols
# Non-absolute path is relative to the specific directory where gnokii is run!
#connect_script = /root/.gnokiirc
#disconnect_script =
# When sending SMS you can experience timeouts. This is the feature of the
# overloaded SMSCs. The phones waits for the response from the SMSC confirming
# that it received the short message. When the SMSC is DoSed with many requests
# it will take more time to get the response. Adjust it to your needs. The
# value is given in seconds to wait. Defaults to 10 seconds. Set to 0 to wait
# forever.
smsc_timeout = 10
# Any entries in the following two sections will be set as environment
# variables when running the scripts.
# Handy for use for $VAR substitutions in your chat(8) script.
[connect_script]
TELEPHONE = 7341019412
[disconnect_script]
si alguien puede decirme que esta mal pues ya no se que hacer. agradecere su pronta respuesta.
GRACIAS | No es pot respondre |
13. Re: problema GNOKii NOKIA 5190 (21/03/2005 00:29, #25792) Por: Anònim |
| Hola,
Soy el autor del articulillo.
Así a bote pronto no lo sé, hace tiempo que no miro estas cosas.
Sólo una pista: si gnokii no te va fino prueba gammu, que a veces puede dar mejores resultados (depende del teléfono, etc.) aunque hay algunas controversias con los autores de gnokii, etc....
Suerte! | No es pot respondre |
|
14. Re: Linux con mando a distancia via SMS (30/11/2005 19:15, #29744) Por: Cristian |
| holas, sabes quiero hacer una conexion PPP entre un modem convencional y un telefono celular (se t610), utilizando el modem de éste conectado via cable serial a otro pc, el problema me radica que con minicom en el modem convencional marco el numero del celular (atd numerocelular) , hace la llamada todo bien y al constestar en el celular con ata (comando at en el minicom) no hace el sonido caracteristico de cualquier modem, sino que me envia modo voz, alguien me puede orientar al respecto como puedo solucionar mi problema? de antemano gracias | No es pot respondre |
15. Re: Linux con mando a distancia via SMS (07/02/2006 21:06, #30883) Por: jose luis |
| Hola. Queria hacer que el ordenador(linux) sea capaz de mandar alguna señal al movil(nokia 6230) y que este empieze a vibrar o a sonar. Alguien me puede ayudar?? Si alguien sabe como hacerlo, que programa necesito instalar, que archivo debo modificar,etc ,por favor decidmelo, cualquie ayuda me podria ser util. Si alguien me quiere ayudar puede mandar algun mensaje al foro o sino a mi correo: josegc55@hotmail.com Gracias | No es pot respondre |
|
|
|
|
|
|---|
|
|
|
|
Calificacion
    Vots: 12 |
Danos tu opinion:
|
|
|
|
|
|
|
|