Viernes, 20 de marzo de 2015

Escenario:

- Unas impresoras que solo imprimen bajo windows.

- Uso linux como S.O. cotidiano.

- No voy a comprar más impresoras ni a usar windows de manera habitual.

Solución:

- Usar VirtualBox para virtualizar windows e instalar la impresora en el mismo.

- Compartir una carpeta entre el sistema y la máquina virtual, que es donde pondremos los documentos a imprimir.

Problema:

- Mala memoria.

- Muchas distros, cuando instalas VirtualBox, añaden la carga al inicio del sistema de los módulos: vboxdrv, vboxnetadp, vboxnetflt, que son necesarios para el funcionamiento del programa.

- Como solo imprimo exporádicamente no necesito tener disponible el programa de virtualización siempre, así que desactivo la carga automática de los módulos anteriores.

En estas condiciones cuando quiero imprimir tengo que hacer:

- Abrir una consola loguearme como root y cargar el módulo: (1)

# modprobe vboxdrv

- Ejecutar virtualbox.

- Iniciar la máquina virtual de windows.

- Imprimir.

- Cerrar la máquina, apagar VirtualBox.

- Abrir una consola loguearme como root y descargar el módulo:

# modprobe -r vboxdrv

Un poco tedioso, y con mi mala cabeza algo se me olvida ó no me acuerdo del comando... ¿por que no automatizarlo un poco?

Una de las caracteristicas de abrir un programa desde un script es que el script sigue abierto hasta que cierres el programa,(esto se podría evitar pero en este caso biene bien), se puede observar creando un script que abra un programa, ejecutarlo y teclear en una consola: ps -e

Se puede ver el programa y el script que lo llamó activos.

Cuando cierras el programa tambien se cierra el script que lo llamó.

¿Bueno y qué? ... Que hay un comando que gestiona/aprobecha esta circunstancia, el comando: trap

Al tajo, seguidamente el script que me facilita la vida...


#!/bin/bash
# Capturamos la señal de salida 'EXIT' y ejecutamos la función 'AlSalir' cuando esto ocurre.
trap 'AlSalir' EXIT
# Función AlSalir
function AlSalir()
{
# Pedimos permisos de root, (estoy en KDE), y descargamos el módulo.
kdesu modprobe -r vboxdrv
# Restauramos la señal 'EXIT' a su estado normal.
trap - EXIT
}
# Esto es lo que se ejecuta lo primero: carga el módulo con permisos de root y ejecuta VirtualBox como usuario.
kdesu mododprobe vboxdrv
VirtualBox
 

Con esto ya se encarga el solito de cargar y descargar el/los módulos necesarios, incluso podrias cerrar Virtualbox y dejar corriendo solo la máquina virtual que ya se encargaría el sistema de hacer limpieza al cerrar la máquina virtual.

(1) ¿Por qué para imprimir solo cargo este módulo?

Para instalar un sistema operativo en una máquina virtual activo todos los módulos, ya que son necesarios para acceso a la red, para actualizaciones ó para impresión en red.

Pero mi impresora es local y una vez que tengo configurado Windows no quiero que tenga acceso a la red así que le desactivo la red en la configuración de la máquina virtual y no necesito cargar los módulos: vboxnetadp y vboxnetflt que son los que se encargan de la gestion de redes.

FIN


Publicado por ExpoBi @ 10:34
Comentarios (0)  | Enviar
Comentarios