Linux - Avisador Telefonico

   
Vista:
Imágen de perfil de barnarasta

Avisador Telefonico

Publicado por barnarasta (146 intervenciones) el 09/03/2013 17:37:28
Buenas tardes compañeros,

me encargaron la posibilidad de que los usuarios pudieran recibir en su mobil (de empresa) una llamada telefonica -interpretada como aviso-, (nada de sofisticaciones de SMS ni mensages de voz, una simple llamada telefonica), para auto-acordarse de un evento laboral puntual.

Inicialmente pense que el mismo usuario podia usar su mobil para ponerse el aviso :), pero logicamente eso no es profesional y es como si vas a comprar pan y te dicen que vayas a oto establecimiento :).

Bien, el planteamiento seria el siguiente:
Utilizando un modem tipo "hayes" y la salida serie /dev/ttyS0
1) que el usuario entrara los datos del dia, hora y telefono a efectuar el aviso desde un script, php, python, ......
1A) ejecutar un # at [ dia-hora ] instruccion para meterlo en un atcron

2) la instruccion a ejecutar seria con el commando "cu" ya que permite la llamada directa a un numero telefonico ' vs ' uucico que realiza la llamada a un sistema - definido en /etc/uucp/sys -.

================================================================
despues de un par de dias totalmente rayado con " cu " http://linux.die.net/man/1/cu
no funciona
root@milinux:/home/provas# cu 609817253
cu: must specify system, line, port or speed
Usage: cu [options] [system or phone-number]

# man cu ==========> cu [ options ] [ system | phone | "dir" ]
tampoco
root@milinux:/home/provas# cu -pACU 609817253 "dir"
y combinando las "options" posibles tampoco.

==================================================================
Esta mañana vi algo de luz gogleando por las listas de Debian y creo que el problema reside en los permisos del /dev/ttyS0
crw-rw---- 1 root dialout 4, 64 mar 9 15:18 ttyS0
realizando chmod a+rw /dev/ttyS0 cambia a :
crw-rw-rw- 1 root dialout 4, 64 mar 9 15:18 ttyS0
y entonces si que trabaja bien:
cu -pACU 609817253
------------------------------- con esto ya tendria solucionado el problema, pero ....................
al reiniciar, los permisos se restauran !!! :(
al fichero /etc/ppp/if-down le añadi el chmod a+rw /dev/ttyS0 tal y como vi gogleando que lo habian solucionado en un fedora, pero parece ser que existe alguna diferencia con Debian porque no causa ningun efecto.

y la ayuda que solicito es la siguiente, porque me da terror tocar ficheros de sistema, es:

donde toquetear o que cambiar para fijar los permissos de /dev/ttyS0 para poder usarlo por todos los usuarios?

Añado que tambien probe con el paquete modem-cmd con identicos resultados.

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder

Avisador Telefonico

Publicado por Tom (346 intervenciones) el 11/03/2013 09:15:06
Si tu sistema usa udev, puedes probar a escribir una rule para ttyS0, algo así como:

KERNEL=="ttyS[0-9]*", NAME="tts/%n", SYMLINK+="%k", GROUP="uucp", MODE="0666"

en alguno de los ficheros de configuración (/etc/udev.conf o uno nouevo bajo /etc/udev/rules.d/).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de barnarasta

Avisador Telefonico

Publicado por barnarasta (146 intervenciones) el 11/03/2013 13:21:40
Gracias TOM por el aporte, mirare de investigar sobre tu propuesta en un equipo que tengo para hacer experimentos.

Otra idea que se me ocurrio fue la de hacer un script para ponerlo en el arranque del /etc/init.d,
para que fuera el ultimo a ejecutarse.

Ya lo hice y cuando lo declare con # update-rc.d [ script ]
me dio este warnig :
insserv: warning: script 'ultimo' missing LSB tags and overrides.
Parece ser que Debian requiere unas definiciones LSB que deben de figurar en todos los scripts del /etc/init.d.
Sin encontrar demasiada informacion - didactica o entendible -, me decidi por incorporar al inicio de mi codigo:
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
### BEGIN INIT INFO
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: urad
# Description: Ultimas reglas en arranque Debian
#
### END INIT INFO
##################### Inicio de declaraciones
echo " ============>     Carga de mi SCRIPT <=============================="
chmod 666 /dev/ttyS0


Con esto ya pude incorporarlo al arranque sin warning's y parece que funciona el inventillo.
Pero observo en unos 10 arranques de testeo que no siempre carga MI script en el mismo orden,
recuerdo en la epoca de Unix-SCO que la carga era de forma alfabetica y definiamos nuestros script's personales como 99[blablabla] para que cargaran los ultimos.
de que forma lo hace Debian ??

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Avisador Telefonico

Publicado por Tom (346 intervenciones) el 11/03/2013 21:02:49
Debian, al menos wheezy que es lo que tengo puesto ahora, usa udev. ¿ Lo probaste ? Te olvidas del orden de ejecución y todo eso, las rules de udev se examinan cuando se conecta el dispositivo (el modem en tu caso, supongo).

No lo puedo probar, no tengo nada ahora que se reconozca como usbserial.

Por cierto, ¿ has probado a enviar comandos hayes al modem ? Puedes escribir
1
"ATDT numero_de_telefono\r\n"
directamente desde el shell si no has cambiado los ajustes de velocidad del puerto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de barnarasta

Avisador Telefonico

Publicado por barnarasta (146 intervenciones) el 11/03/2013 23:33:47
Gracias TOM por las molestias, yo tengo Squeeze en la maquina,

ya pude probar en casa lo que comentaste, pero sin ningun exito.

puse dentro del archivo miregla, las instrucciones que pusiste y no causaron ningun efecto,

r
1
2
3
4
5
6
oot@milinux:/etc/udev/rules.d# l
total 12
-rw-r--r-- 1 root root 417 oct 28 23:38 70-persistent-cd.rules
-rw-r--r-- 1 root root 442 abr 23  2012 70-persistent-net.rules
-rw-r--r-- 1 root root  68 mar 11 23:11 miregla
lrwxrwxrwx 1 root root  15 abr 23  2012 z60_hdparm.rules -> ../hdparm.rules



1
2
root@milinux:/etc/udev/rules.d# cat miregla 
KERNEL==ttyS[0-9]*, NAME=tts/%n, SYMLINK+=%k, GROUP=uucp, MODE=0666


sera necesario quizas ligarlo con alguna instruccion del init ?

Sobre lo de aplicar el comando HAYES, no me es posible hacerlo sin cambiar los permisos del ttyS0, la salida del error es la siguiente:
cu -l /dev/ttyS0 -p ACU [ num_telefono ]
cu: open (/dev/ttyS0): Permission denied
cu: /dev/ttyS0: Line in use
------------------------------------------
si manualment ele hago previamente
# chmod 666 /dev/ttyS0
entonces no hay ningun problema, asi como tambien funciona asignando el ttyS0 al usuario y grupo uucp y sin tocar los permisos.
--------------------------------------------
el problema reside en que al ' reboot ' los permissos, usuario y grupo se restauran al modo original, no es una maquina que se apague amenudo, pero ante un corte electrico o alguna incidencia que obligaran al apagado, podria romperme los sesos buscando ' fantasmillas '

Gracias, seguiremos buscando una salida. :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Avisador Telefonico

Publicado por Tom (346 intervenciones) el 12/03/2013 12:58:49
Extraído de aquí:

http://ubuntuforums.org/showthread.php?t=782115

Añade tu usuario al grupo uucp o dialout (o a los dos, si existen)
Crea una rule udev, con un nombre de fichero apropiado (por ejemplo: /etc/udev/rules.d/40-permissions.rules)

Si en tu debian ttyS0 _no_ es un link a /dev/tts la rule podría ser esta:

KERNEL=="ttyS[0-9]", GROUP="dialout", MODE="0777"

Reinicia udev:

sudo /etc/init.d/udev restart

Udev es muy potente, aunque la documentación no es fácil de leer ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de barnarasta

Avisador Telefonico

Publicado por barnarasta (146 intervenciones) el 13/03/2013 09:05:26
1
2
Añade tu usuario al grupo uucp o dialout (o a los dos, si existen)
Crea una rule udev, con un nombre de fichero apropiado (por ejemplo: /etc/udev/rules.d/40-permissions.rules)


Muchisimas gracias TOM,
es justo lo que faltaba :),
lo probe anoche en la maquina de pruebas y funciona ' de coña', ahora mirare de incorporarlo al equipo de produccion,
supongo que no habra problemas por añadir 18 usuarios a un mismo grupo :)

1salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar