Utils/TcosDevices/es

From TcosProject

Jump to: navigation, search


[edit] ¿Qué es TcosDevices?

TcosDevices es una pequeña aplicación Python+Gtk2 y un demonio que monta memorias USB, disquetes y CDROM's

TcosDevices está formado por dos partes:

  • Modo demonio (se ejecuta sin interfaz y escanea los eventos udev (añadir, quitar) del terminal ligero cada 3 segundos ejecutando el método de montaje basado en LTSPFS y FUSE. Usa las notificaciones para enviar mensajes al usuario.
  • Modo interfaz (arranca en la bandeja del sistema y permite montar disquetes o cds que no generan esos eventos)

TcosDevices está traducido a Inglés y Español y puede ser traducido a otros idiomas usando una plantilla gettext.

Image:Messagebox info.png NOTE: puedes ver el nuevo TcosDevices en acción screencast de tcos-devices-ng

[edit] Instalación

# apt-get install tcosmonitor

[edit] Configuración

Image:Button ok.png TIP: El Usuario debe pertenecer al grupo fuse antes de usar esta herramienta:

# adduser xxxxxx fuse

Image:Button ok.png TIP: Puede deshabilitar tcos-devices para los usuarios remotos editando /etc/tcos/tcosmonitor.conf:

# tcos-devices enable or disable (values 0 or 1)
 tcos-devices=0

[edit] Código Fuente

En el TRAC de TCOS: http://trac.tcosproject.org/browser/trunk/tcosmonitor

[edit] ¿Cómo funciona?

El terminal ligero ejecuta tcosxmlrpc (un pequeño servidor web xml-rpc escrito en C con la biblioteca libxmlrpc-c3), el servidor XMLRPC escucha en el puerto 8080 y el servidor de terminales ejecuta algunas utilidades python que se conectan al terminal.

La primera herramienta tcos-devices --daemon lee (cada 3 segundos) un archivo de registro en el terminal que contiene los eventos de bloques de udev, si el archivo tiene uno o más eventos, los devuelve al programa python que ejecuta varios métodos dependiendo del evento.

[edit] Regla de Udev

La regla de udev guarda estas variables de entorno:

       id_bus=$(get_env_var "ID_BUS")
       device=$(get_env_var "DEVNAME")
       action=$(get_env_var "ACTION")
       label=$(get_env_var "ID_FS_LABEL")
       fs_type=$(get_env_var "ID_FS_TYPE")
       vendor=$(get_env_var "ID_VENDOR")
       model=$(get_env_var "ID_MODEL")
       devpath=$(get_env_var "DEVPATH")
       
       echo "$id_bus#$device#$action#$label#$fs_type#$vendor#$model#$devpath" >> $output_file


[edit] Eventos

Este diccionario python contiene la configuración de las acciones que tcos-devices lanzará con cada evento:

    listen={
       "insert":[ ["ID_BUS=usb", "ACTION=add"],    self.add_usb],
       "remove":[ ["ID_BUS=usb", "ACTION=remove"], self.remove_usb],
       "mount-floppy":[ ["DEVPATH=/block/fd0", "ACTION=mount"] , self.mount_floppy_event ],
       "umount-floppy":[ ["DEVPATH=/block/fd0", "ACTION=umount"], self.umount_floppy_event ],
       "mount-cdrom":[ ["DEVPATH=/block/hd", "ACTION=mount"] , self.mount_cdrom_event ],
       "umount-cdrom":[ ["DEVPATH=/block/hd", "ACTION=umount"], self.umount_cdrom_event ],
       "mount-flash":[ ["DEVPATH=/block/sd", "ACTION=mount"] , self.mount_flash_event ],
       "umount-flash":[ ["DEVPATH=/block/sd", "ACTION=umount"], self.umount_flash_event ]
    }


Cada evento tiene la siguiente nomenclatura:

  "nombre_evento": [   ["var1=valor1"] , [var2=valor2] , metodo.python.que.se.ejecutara ]

El método de python recive la linea de udev, algo como esto:

   id_bus # device  # action # label # fs_type # vendor # model # devpath

[edit] Esquema de funcionamiento

  • Lado del terminal ligero
  • Lado del servidor
  • El espacio entre los dos bloques es la red local.
  • Servidor XMLRPC y cliente


Image:Button ok.png TIP: Este esquema está en inglés pero creo que se puede entender, si lo quieres ver en español, pídemelo

Esquema de TcosDevices
Esquema de TcosDevices

[edit] Algunas capturas de pantalla

[edit] Autoarranque en la bandeja del sistema

Icono de la bandeja del sistema

[edit] Montado disquete

Disquete
Disquete

[edit] Disquete listo para usar

Disquete listo
Disquete listo

[edit] Montando una memoria USB

Memoria flash lista para usar
Memoria flash lista para usar