Configurar una impresora LPD en Windows para imprimir desde Linux

printer test page cups

Me da vergüenza decirlo, llevo años mandando mis trabajos de impresión a una impresora que usa Windows (no tenía otra alternativa). Y me da más pena decir que durante esos mismos años batallé para que funcionara.

Incluso varios artículos de este blog tratan sobre el tema, como pueden ver en Impresora compartida con samba pide usuario y contraseña o en Problemas al imprimir en una impresora compartida en windows desde linux.

Pero con el tiempo mi equipo se ha ido actualizando y los demás equipos no provocando una serie de incompatibilidades casi siempre relacionadas con el tema de la seguridad.

Siempre había logrado resolver esos problemas invirtiendo una o dos horas, pero ayer llegué al límite. No puedo estar haciendo circo, maroma y teatro cada vez que actualizo mi computadora con manjaro.

Llegó la hora de buscar otra opción.

LPD (Line Printer Daemon)

En algún momento de mi vida ví algo sobre LDP pero lo pasé por alto. Al ver las opciones de conexión que ofrece el asistente de CUPS lo recordé y me puse a investigar sobre el tema.

LPD es un protocolo de red para enviar trabajos de impresión a una impresora remota y se entiende perfectamente con CUPS.

El único problema es que la impresora esta conectada a un equipo con Windows (7 en este caso).

Instalar LPD en Windows.

Afortunadamente LPD esta incluido en Windows pero no esta habilitado por default, para eso hay que instalarlo.

Vamos al Panel de control, luego a la sección de Programas posteriormente a donde dice Activar o desactivar las características de Windows y finalmente activamos la opción que dice Servicio de impresión LPD y eso es todo.

Servicio de impresión LPD

Les recuerdo que en mi caso la impresora ya tenía un nombre de recurso compartido y de hecho, si alguien manda imprimir desde otro equipo en Windows sigue funcionando.

Configurar la impresora en Linux.

Para evitar problemas que he tenido en el pasado, utilizo el configurador de CUPS ( http://localhost:631 ).

Doy de alta la impresora de manera normal, me va a preguntar un nombre, descripción, pero a la hora de especificar la conexión lo hago de la siguiente forma.

lpd://dirección.IP/nombreImpresora

Llegó el momento de la verdad. Si todo salió bien podrán imprimir desde linux en una impresora compartida en un equipo con windows usando LPD en lugar de Samba).

Python Ping, un script que revisa las direcciones IP de tu red

python ping en ejecucion

La mejor forma de aprender un lenguaje de programación es tomando un proyecto y resolviendo sus problemas. En el proceso se investiga como hacer las cosas, resolver algunas dudas, depurar el código y probar su funcionalidad.

Soy fan de Python, pero no soy un experto. Python Ping es un programa que toma un archivo CSV (delimitado por comas) que tiene dos datos, una descripción del equipo y su dirección IP.

El programa toma esa información y hace ping, si el equipo responde, muestra un mensaje de OK, de lo contrario, reproduce un sonido y muestra un mensaje de error.

Hace una pausa de 10 minutos y vuelve a empezar. De esa forma es posible detectar problemas en la red, su ubicación y su frecuencia.

En una operación normal, todo debería de estar OK, pero todos sabemos que eso no siempre es así.

El archivo CSV.

Lo bonito de almacenar la información en un archivo CSV es que es muy sencillo de editar, actualizar y mantener.

Para ejemplo de este artículo elegí servidores que todos conocemos:

Archivo servidores.csv

Google , google.com
Bing , bing.com
Facebook , facebook.com
Twitter , twitter.com
Wikipedia , wikipedia.com

Una descripción, luego una coma y al final una dirección. Para el ejemplo puse los dominios, pero se pueden reemplazar por las direcciones IP. Eso lo hago porque a mi me interesa revisar una red local.

Desmenuzando el programa.

Al final del artículo pondré el código completo, aquí voy a ir desmenuzando algunas de las partes del mismo.

Import

import os
import csv
from colorama import Fore
import time
import datetime

Esta es la lista de los import del programa. Para que algunas cosas funcionen es necesario declararlas primero.

os lo utilizo para ejecutar instrucciones como si estuviera en la terminal.

csv para importar la información del archivo CSV en una variable dentro del programa.

colorama le da color, poniendo los errores en rojo, lo que esta bien en verde, los textos en blanco.

time y datetime los uso para formatear algunas salidas de tiempo.

check_ping

La función check_ping es la que hace el trabajo pesado. Quiero hacer notar que en lugar de utilizar el comando ping tradicional uso el comando fping que es más rápido y se adapta mejor cuando se llama desde un script.

La instrucción fping hace 10 reintentos antes de declarar un error de conexión.

sonido_alerta

Esta función es un plus. No voy a estar viendo la pantalla todo el tiempo durante la ejecución del script. Así que si hay un error hace un sonido. Como pueden ver en el código, lo que hace es reproducir un archivo mp3 a su elección.

El loop

El programa se repite indefinidamente en un ciclo haciendo una pausa de 10 minutos. De esta forma está revisando continuamente la red y avisa si hay algún problema. Para terminar el ciclo hay que presionar Control + C y se interrumpe la ejecución.

python_ping en acción

Como pueden ver, el programa es relativamente sencillo. Estoy consciente de que hay muchas cosas que se pueden mejorar, así que estoy abierto a sus comentario. Si desean utilizarlo, lo pueden hacer respetando claro la licencia pública general GNU, que permite utilizar, distribuir y modificar este código.

Convertir imágenes de formato HEIC a JPG con Linux

apple

Hace unos días tuve un problema muy interesante. Les cuento, ustedes saben que buena parte del negocio de Apple es aumentar el tamaño del espacio de almacenamiento rentado en iCloud.

Me parece que de inicio dan 5 GB que es claramente insuficiente y se llena con mucha facilidad. Es por eso que muchas personas optan por comprar un plan de almacenamiento que varía un poco de país en país.

Planes de almacenamiento de iCloud
Precios a Enero del 2018.

Un compañero llegó a mi por una advertencia de que su espacio en iCloud ya estaba lleno. Le expliqué que si quería almacenar sus fotos en iCloud tendría que pagar a menos que …

Google Fotos

Se que existe una versión de Google Fotos para iOS, solo se necesita una cuenta de Google para que empiece a almacenar las fotos que se toman en el iPhone o en el iPad y se sincronizan automáticamente.

Tengo entendido que el espacio es ilimitado si se guardan en formato de alta calidad, pero no muy alta calidad (estos aparatos nuevos abusan).

Mi compañero me dijo que no importaba, solo quería tener un respaldo de sus fotos por si algún dispositivo se pierde o descompone.

Y funcionó muy bien !!! De inmediato las fotos se empezaron a subir a la nube de Google, lo mejor es que también tiene acceso mediante el sitio web así que todo era miel sobre hojuelas hasta que un día …

HEIC ¿Qué demonios es eso?

Un buen día quiso descargar un álbum de imágenes selectas y ¡Oh sorpresa! nos dimos cuenta de que los archivos tenían una extensión extraña, todos las imágenes tenían la extensión .heic .

Pues resulta que HEIC (High Efficiency Image File Format) es el nuevo formato que utilizan los dispositivos Apple, creo que a partir de iOS 11. Y por lo visto todavía no es muy conocido y algunos no están muy contentos con “la novedad” (léase HEIC file format is Unwelcomed!).

Google Fotos no tiene problemas para mostrar los archivos, pero al descargarlos lo hace en su formato original y actualmente no es muy conocido. Ninguno de mis programas para visualizar imágenes en Linux lo reconocía ¡Ni siquiera GIMP! y eso amigos, eso si que es un problema.

Intenté un cambio de formato con ImageMagick pero tampoco. Así que era tiempo de buscar opciones.

Tifig

Afortunadamente me encontré en GitHub con un programa muy verde pero que en mi caso funcionó muy bien llamado tifig.

Tuve que instalarlo a mano, porque todavía no existe un paquete en AUR para este programa. Hay un repositorio para Ubuntu, pero en mi caso tuve que instalar algunos programas dependientes.

En la misma página del proyecto se ofrecen las distintas opciones de instalación.

De HEIC a JPG por montones

Una vez instalado tifig todo es más sencillo.

Forma de uso:

Converts iOS 11 HEIC images to practical formats
Usage:
  tifig [OPTION...] input_file [output_file]

  -i, --input arg            Input HEIF image
  -o, --output arg           Output image path
  -q, --quality [=arg(=90)]  Output JPEG quality (default: 90)
  -v, --verbose              Verbose output
  -w, --width arg            Width of output image
  -h, --height arg           Height of output image
  -c, --crop                 Smartcrop image to fit given size
  -p, --parallel             Decode tiles in parallel
  -t, --thumbnail            Use embedded thumbnail
      --version              Show tifig version 

Sin embargo, ejecutar un comando por cada archivo es tardado y tedioso. Al principio pensé en alguna solución con Bash, pero luego apareció parallel como una alternativa más eficiente.

Por ejemplo, esta instrucción convierte todos los archivos .heic del directorio actual a jpg y además los redimensiona a 1200 pixeles de ancho.

parallel -j 3 --eta tifig -w 1200 '{}' '{.}.jpg' ::: *.heic

A parallel le indiqué que utilizara 3 núcleos del microprocesador con -j 3 (tengo un microprocesador de 4 núcleos) y que me mostrara un tiempo aproximado de finalización con –eta.

De este modo la conversión es mucho más veloz.

La solución web

Existe una página que ofrece la conversión de heic a jpg que se llama heictojpg.com que hace un excelente trabajo.

Heictojpg
Heic to JPG para trabajos pequeños.

El único problema es que esta limitado a 50 imágenes por lote.

Supongo que con el tiempo el formato heic se agregará a los formatos soportados por los principales programas de edición gráfica. Pero por el momento esto es lo que hay.

¡Felices conversiones!.

Imagen destacada de Medhat Dawoud en Unsplash