CUPS y el sondeo automático de impresoras en Ubuntu

Como ya habréis leído en posts anteriores, he cambiado al distro de mi portátil. Ahora uso EHUX 2 (Ubuntu Dapper) en lugar de Fedora Core 5 (a los fedoritas : no os preocupéis, en mi PC de escritorio mantengo el Fedora Core 6 😉 El caso es que algunas opciones de configuración muy útiles de Dapper están bastante ocultas o en el caso que centra este post, han sido directamente seccionadas de cuajo. En concreto, el soporte de Network Printer Discovery de CUPS. Me explico:

CUPS + Network Printer DiscoveryA partir de la versión 1.2 de CUPS (el gestor de impresoras de Ubuntu Dapper por defecto), se incluye una opción para sondear la red de forma automática en busca de impresoras de red compartidas. Para ello se hace uso del protocolo SNMP (Simple Network Management Protocol). El resultado de usar esta opción (ver imagen de la izquierda) es que, el usuario, a una distancia de dos clicks de ratón, puede instalarse una impresora de red desde su máquina Linux (los usuarios de Windows pueden aprovechar para limpiarse la baba antes de seguir leyendo ;-).

CUPS - Network Printer DiscoveryEl problema, como puede verse en la imagen de la izquierda: todavía no sé por qué, a pesar de que CUPS 1.2 incluye de serie esa opción de Network Printer Discovery, en Ubuntu Dapper han decidido que la eliminaban. Adiós simplicidad.

La solución, encontrada gracias a este artículo en KDE_Developers:

$  cd /usr/lib/cups/backend
$ sudo ln -s /usr/lib/cups/backend-available/snmp

El resultado es espectacular y muy, muy útil, sobre todo si trabajas en un centro en el que disponéis de varias impresoras de red compartidas y no quieres configurarlas una a una a mano…. (caso de la UPV/EHU !)

Actualización: en Ubuntu Dapper, por defecto, se ha deshabilitado también la posibilidad de gestionar impresoras a través del interfaz Web de CUPS. Si quieres volver a activar esta opción, debes de seguir los siguientes pasos:

# Añadir usuarios cupsys al grupo shadow

sudo adduser cupsys shadow

# añadirte a tí mismo al grupo lpadmin

sudo adduser <tu_usuario> lpadmin

# reiniciar cupsys

sudo  /etc/init.d/cupsys restart

# configurar las impresoras a través del interfaz web e introducir
# usuario y pw cuando se solicite

http://localhost:631/

Actualización de MySQL 4 a MySQL 5

Acabo de actualizar mi sistema Linux de Fedora Core 4 a Fedora Core 6. Aparte de un problemilla con la actualización del GRUB que he resuelto en el primer arranque, todo parecía haber ido bien. Sin embargo, la actualización de MySQL 4.x a MySQL 5.x que se ha ejecutado durante el proceso de actualización de Fedora no ha ido todo lo fina que debería. En un principio, parece que todo es correcto, pues las aplicaciones web que tenía alojadas en mi pc local seguían funcionando (y todas ellas hacen uso de MySQL en la capa de datos). Sin embargo, probando MySQL Workbench (el modelador gráfico de bases de datos), no conseguía hacer funcionar la opción de Ingeniería Inversa (dada una base de datos ya construída, extraer el esquema E/R). El error con el que me encontraba era el siguiente:

Error log:

Fetching schemata...

Schemata fetched.

Reverse engineering schema...Error calling

ReverseEngineeringMysql.reverseEngineer: Could not get routines.The schema(ta)

could not be reverse engineered (error: 0)

Could not get routines. (SHOW PROCEDURE STATUS;MySQL Error 1146: Table 'mysql.proc' doesn't exist)

He seguido esa cadena de error (mysql.proc, tabla que se genera para la gestión de procedimientos almacenados) en el bugzilla de MySQL y he visto que al parecer no soy el único al que le ha ocurrido (ver último comentario). La tabla mysql.proc se genera al instalar mysql 5. Si simplemente actualizamos de la versión 4 a la 5, tendremos problemas si no seguimos el último paso que indica explícitamente el manual, y más en concreto aquí: http://dev.mysql.com/doc/refman/5.0/en/mysql-upgrade.html

$ mysqlcheck --check-upgrade --all-databases --auto-repair
$ mysql_fix_privilege_tables

Voilá! Ahora puedo trabajar sin problemas con MySQL Workbench.

Administración remota con AjaxTerm

AjaxTermLa administración remota requiere normalmente acceso a una terminal en un sistema remoto, pero si no quieres o no puedes permitir el uso de ssh de forma directa, no hay muchas opciones alternativas. El dejar abierto el puerto ssh sin configurar correctamente puede permitir el abuso del mismo mediante ataques de fuerza bruta, y si ya tenemos el puerto 80 abierto para servir aplicaciones web, alguien puede preguntarse la razón de tener que abrir otro puerto más.

Una posible solución podría ser el uso de una terminal a través de un interfaz web. En los sistemas Linux con Apache, esto es realmente posible mediante el uso de algo como AjaxTerm. AjaxTerm es una terminal escrita en Python que usa técnicas AJAX para tratar parte de la lógica en el navegador cliente.

Puede aprender los conceptos básicos en este artículo de TechRepublic o bien ir directamente a la página oficial de AjaxTerm.

Ramas (branches) de texto en VIM

Acabo de leer un nuevo truco del editor VIM : supongamos que estás editando un documento en VIM 7.0. Llevas al menos una hora y pico retocando, etc. Y de repente te das cuenta de que has metido la pata, no sabes cómo, y has borrado en algún momento algún trozo de texto que te interesaba conservar. No hay problema, podemos recuperar el estado anterior con el comando UNDO (tecla ‘u’). Tras el undo, cuando empecemos a teclear, VIM creará una nueva rama (branch).

La creación de ramas y su completa gestión en VIM la podemos estudiar en el manual online de este potente editor. Aparte del hecho de que desconocía esta creación automática de ramas de versiones del mismo texto, también desconocía que se pueden hacer cosas como éstas:

Por ejemplo, quieres recuperar el estado del texto tal y como estaba hace 45 minutos:

:earlier 45m

Queremos movernos a la versión 30 segundos posterior:

:later 30s

Cada día me sorprende más VIM.

OpenOffice Draw y UML

En varias de mis asignaturas necesito crear diagramas UML, en concreto diagramas de clases y de secuencia. Existen varias herramientas disponibles bajo licencia abierta para estos menesteres, como ArgoUML, Umbrello o DIA, pero personalmente, por un lado me gusta trabajar y adaptar OpenOffice.org a mis necesidades, y por otro, no me gusta salir del «entorno» OpenOffice para realizar otras tareas. Además, OOo Draw me permite crear filigranas que otras las otras herramientas mencionadas no soportan. No soy el único al que le interesa crear diagramas UML en OOo, y de hecho, en el Bugzilla de esta suite ofimática he encontrado un bug con una solución parcial a lo que yo busco: una serie de flechas en OOo Draw para representar los distintos tipos de relaciones entre clases en un diagrama de clases UML.

Por mi parte, dejo aquí otro enlace con mi aportación: un Diagrama de Secuencia hecho en OOo Draw. Como lo que el resto de colegas aprovechará serán los elementos gráficos y no el texto, seguro que no os importa que el texto del diagrama esté en Euskera y que el propio diagrama sea un borrador 🙂 Estoy seguro de que aquel que busque una plantilla para comenzar a crear diagramas UML en OOo Draw, agradecerá lo que ofrezco.