Archivo por meses: abril 2014

Ejecutar scripts al inicio de Linux

A veces es interesante que al arrancar nuestro equipo se ejecuten ciertos scripts.

Si tenemos una distro Ubuntu o basada en ella, podemos usar /etc/rc.local, es decir, meter la llamada a dicho script dentro de este fichero (antes del «exit 0», lógicamente).

Sin embargo, desde que Ubuntu usa Upstart como sistema de arranque no tengo claro que sea una buena forma de iniciar los scripts ya que es posible que no se ejecute correctamente si depende de otros servicios, como podría ser el de red. En otras palabras, que puede que metas un script que haga algo como enviar un mail (en otro artículo veremos este caso) pero que no esté iniciado el servicio de red y no se ejecute. A mí me ha pasado.

Por eso, para estos casos recomiendo que metáis el script dentro de /etc/network/if-up.d. Los scripts que se encuentren en dicho directorio se ejecutarán sí o sí cuando el servicio de red esté operativo.

En openSUSE el directorio es /etc/sysconfig/network/if-up.d.

OJO: los scripts deben ser ejecutables (algo lógico) y no pueden tener extensión, es decir, si tenéis algo como enviar_mail.sh cambiadlo a enviar_mail (me costó un rato de «googleo» para descubrirlo).

En otro artículo veremos cómo enviar precisamente un mail desde un script (usando nuestra cuenta de gmail) para notificarnos cualquier cosa.

Yo, en particular, tengo un script que me envía un mail cada vez que enciendo el PC de casa para saber que está encendido. ¿Para qué me puede servir? Por ejemplo: para saber que el PC está ya operativo tras haberlo encendido remotamente (más info aquí) 😉

Compartir archivos entre una máquina virtual y el host con VirtualBox

Si usamos VirtualBox para crear y manejar máquinas virtuales, es posible que en algunos casos nos resulte útil poder compartir información entre la máquina virtual y el propio host (*). Yo, en particular, lo uso bastante.

Uno puede pensar que lo más sencillo puede ser usar un pendrive, el cuál, una vez conectado al host, se puede usar tanto en dicha máquina como en la virtual. Lo cierto es que este proceso es también muy sencillo con VirtualBox, pero hay un mecanismo más indicado para esto, y es el que explico a continuación.

En la parte inferior de la máquina virtual hay un icono con forma de carpeta. Si pulsamos con el ratón en él se nos abrirán las preferencias de carpetas compartidas. Entonces nos da la posibilidad de elegir una carpeta en el equipo host para compartirla con las máquinas virtuales. Para ello creamos una entrada nueva -si no la teníamos ya creada- seleccionando dicha carpeta y le damos el nombre de recurso compartido que queramos.

Luego, en el sistema operativo montamos la carpeta con el comando correspondiente. Así:

- En Windows: net use x: \\vboxsvr\recurso
- En GNU/Linux: mount -t vboxsf recurso punto_montaje

Una cosa importante: tenemos que tener instaladas en la máquina virtual las guest aditions. Es todo, así de simple.

(*) En Virtualización, el término host se refiere a la máquina anfitrión, es decir, a la máquina física donde ejecutáis el software de máquinas virtuales (VirtualBox en este caso). En otras palabras, host se refiere a vuestro PC.

El arranque de Windows 7… como para tener prisa

Windows 7 mejoró con respecto a la versión anterior de Windows (Vista), pero claro, hicieran lo que hicieran siempre se mejoraría porque era imposible (alguien lo demostró) hacerlo peor. Una de las cosas que mejoró fue el tiempo de arranque (en Windows Vista, lo normal era encender el equipo, hacerte un café, pasear 10 minutos por el pasillo y luego contar 1 Misisipi, 2 Misisipi, 3 Misisipi… y así hasta 632 Misisipi).

Sin embargo, a Microsoft le gusta colocar alguna opción o mecanismo que irrite al personal, ¿por qué? os preguntaréis. Porque puede. Es así. Bueno… esto es aplicable a aquéllos que lo uséis, yo estoy escribiendo este artículo desde Linux así que por mí no va la cosa (gracias a Dios).

Una de estas características, mecanismos, fallos, vueltas de tuerca… como queráis llamarlo, es que a veces, al encenderlo, el tío se pone a aplicar los cambios de las actualizaciones. A ver, no me parece mal que windows 7 se actualice periódicamente (si no lo hiciera el universo implosionaría… o algo así), pero que lo haga cuando arrancas el equipo… sin dar la posibilidad de posponerlo al menos una vez… pues toca las narices -cuando menos-.

El otro día necesitaba -de hecho- arrancar un PC con windows 7 para sacar una información urgente y se pone a actualizar… y actualizar… y actualizar…

… y actualizar… y actualizar… 25%…. 26%…

… y ¡se reinicia! Dios mío! ¿Puede ser? ¿Ha terminado ya? ¿En sólo 10 minutos? ¡Bien! Arranca de nuevo y…

… ah, no, espera… actualizar… actualizar… 32%… 40%…

… y al final tuve que desistir porque se me pasó el plazo de tiempo que tenía disponible para sacar un archivo.

Es lo que ocurre cuando algún documento importante depende de un sistema como Windows, que se actualiza en el arranque (quieras o no), y, aunque el tiempo de éste disminuyó drásticamente desde windows vista, si luego se pone a actualizar, la cosa iguala e incluso empeora a su infame predecesor.

Windows 7, personalmente, me ha parecido siempre un digno sustituto de windows xp, pero tiene sus mecanismos para desesperarte, para tocarte las narices y demostrarte que Windows puede conseguir que la máquina más veloz te haga esperar 10 minutos a que arranque. ¿Por qué? Porque puede.

Así que ya sabéis, si tenéis que acceder a vuestro equipo windows e indica que está actualizándose, podéis aprovechar a hacer la cama y tender la ropa, aunque seáis tan lentos como yo, no os preocupéis… os dará tiempo (de sobra!).

Error al intentar importar datos de Excel en una tabla Access

Situación: queremos importar datos que se encuentran en una hoja de cálculo Excel en una tabla de Access.

Problema: al intentarlo obtenemos el mensaje «error al cargar la biblioteca dll» y no se muestra el asistente.

Solución: ejecutar este_archivo (que carga unos valores en el registro del sistema). Por último, ejecutar esto:

regsvr32 RUTA_DEL_ARCHIVO_DAO360.DLL
regsvr32 RUTA_DEL_ARCHIVO_MSDAO15.DLL

donde RUTA_DEL_ARCHIVO_DAO360.DLL suele ser C:\archivos de programa (x86)\Common Files\Microsoft Shared\DAO\DAO360.DLL

y RUTA_DEL_ARCHIVO_MSDAO15.DLL suele ser C:\archivos de programa (x86)\Common Files\Syste\ADO\MSDAO15.DLL