"Después del juego es antes del juego"
Sepp Herberger

sábado, 20 de septiembre de 2014

Como encoger un PDF escaneado

Es una irritante chorrada, pero siempre me pasa. Escaneo sin fijarme algún documento para enviar por correo y cuando lo voy a adjuntar resulta que pesa 40 megas. Hasta ahora lo que hacía era escanear de nuevo a menor resolución o extraer las imágenes del pdf, reducir la calidad y volver a meterlas dentro con las utilidades convert (del paquete imagemagick) y pdftk.
 
Pero ya no vuelve a pasarme más. El otro día descubrí que con el venerable Ghostscript se puede reducir el tamaño y mantener una buena calidad en el PDF.
 
Primero instalamos los paquetes ghostscript y gsfonts si no lo estaban previamente. Una vez hecho esto, aquí va el script:
 
#!/bin/bash

if [ $# -ne 2 ]
then
  echo "Uso correcto: `basename $0` pdf-origen pdf-destino"
  exit 1
fi
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=$2 $1

 
Con esto pude convertir un PDF de 35M en uno de 1.5M sin perdida apreciable de calidad. Si queremos reducirlo aún más, de tal forma que solo sea para verlo en pantalla pero no para imprimir el comando sería:
 
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=$2 $1
 
Y ya está listo para enviar....

domingo, 7 de septiembre de 2014

Ver la TDT en Linux con una tarjeta TDT Medion-Creatix CTX917

Bueno, se acabó el veranito, hagámosle un homenaje con la canción Summer Time de la divertida serie Historias Corrientes:

Espero que podáis quitárosla de la cabeza. Bueno, vamos al lío.

En la época de la burbuja, cuando eramos ricos y el interbancario de Frankfurt confiaba en nosotros, era una gozada bajar a la calle la mañana del día de Reyes. No era difícil encontrar ordenadores, monitores y otros aparatejos en la basura, tirados por haber sido sustituidos por flamantes equipos nuevos. Tengo varios equipos montados y funcionando a día de hoy con los deshechos de aquel tiempo tan feliz.

Ahora la cosa está mas puñetera, aún así de vez en cuando llega a mis manos un equipo que el usuario ya no quiere y siempre se puede aprovechar algo. En un PC para desguace que me dieron me encontré una tarjeta de TV un poco rara. Mirando en Internet vi que soportaba DVB-T y por tanto serviría para ver nuestra estupenda TDT española. Tengo un PC para los niños en el pueblo para un saloncito que no tiene TV, así que pensé en ponerla allí.

Naturalmente, el PC tiene un Linux, y ahí empezó la parte divertida. La tarjeta creo que venía en un PC Medion de esos que venden los Lidl y los ALDI y es esta: Creatix CTX917, con chipset Medion 7134. El identificador PCI es 1131:7134.

El lspci me decía:

 03:01.0 Multimedia controller [0480]: Philips Semiconductors SAA7134/SAA7135HL Video Broadcast Decoder [1131:7134] (rev 01)
   Subsystem: Hyperparallel Technologies Device [1210:0001]
   Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
   Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR+ INTx-
   Latency: 64
   Interrupt: pin A routed to IRQ 16
   Region 0: Memory at febff000 (32-bit, non-prefetchable) [size=1K]
   Capabilities: <access denied>
   Kernel driver in use: saa7134
   Kernel modules: saa7134

Por supuesto había drivers para Windows, pero eso no me interesa. El Linux la reconocía y cargaba el módulo saa7134 para manejarla, pero no iba la TDT. Despues de forear, investigar y hacer varias pruebas logré hacerla funcionar. Estas son las instrucciones:

1) Instalar los paquetes

apt-get install linux-firmware linux-firmware-non-free dvb-utils

2) Editar /etc/modules y añadir

saa7134-dvb

3) Crear el fichero /etc/modprobe.d/saa7134 con el siguiente contenido:

options saa7134 card=12 alsa=1
install saa7134 /sbin/modprobe --ignore-install saa7134; /sbin/modprobe saa7134-dvb ; /sbin/modprobe tuner ; /sbin/modprobe tda9887

Los parámetros card=12 alsa=1 son los realmente importantes, ya que dicen al driver que tarjeta tenemos. Además se fuerza a cargar saa7134-dvb en lugar de saa7134, que sería para TV analógica.

Reiniciamos y ya se nos cargan los módulos correctos. Ahora lo primero que haremos será buscar los canales y guardarlos en el sitio adecuado:

mkdir -p ~/.mplayer
scan /usr/share/dvb/dvb-t/es-Carceres  > ~/.mplayer/channels.conf

En /usr/share/dvb/dvb-t/* están los ficheros de frecuencias para los diferentes sitios, en mi caso es es-Carceres (realmente debería ser es-Caceres, pero alguien metió la pata al poner el nombre del fichero).

Una vez tenemos el driver, para ver la TDT hay varias opciones, habría que instalar el paquete correspondiente en cada caso:

  • VLC: es el mas simple y me funciona bien para el uso que le doy. Se ejecuta con (he creado un acceso directo en el escritorio con este comando):

    vlc .mplayer/channels.conf

Para cambiar de canal selecciono Ver->playlist
Para grabar la emisión seecciono Ver->Controles avanzados. Entonces me aparece un botón rojo de grabacion junto a los controles de reproducción, aunque no he probado que tal graba.

  • me-tv: puede importar los canales del channels.conf de vlc, pero no detecta todos. No es muy estable.
  • kaffeine. Hay que seleccionar es-carceres y terrestrial para sintonizar. Si dice que no detecta el dispositivo de video, reiniciar el ordenador. Al hacer el autoescaneo detecta bien todos los canales, incluso los HD. Una vez configurado, se ven muy bien y permite grabar programas. Es un poco lento en los cambios de canal, pero funciona. Lo descarté porque excedía lo que yo necesitaba.

Por detrás la tarjeta tiene solamente el conector de cable coaxial de la antena y el conector S-VIDEO/RCA, ya que no tiene salidas de audio ni conector para mando a distancia. En la placa integrada tiene 3 conectores de 4 pines, que son:

  • blanco    audio-in
  • rojo      audio-out
  • yellow    video-in

En mi caso no ha hecho falta conectarlos a ningún sitio.

Por último, faltaba la antena. En la habitación no hay toma de antena y después de salirme gratis la tarjeta no iba a comprarme una antena de TDT portátil, pudiendo hacer una casera con un cable coaxial sobrante segun este tutorial.

Y ya está, con esta instalación tan lonchafinista ya tenemos televisión en el PC.

Aaaadiós.

domingo, 27 de julio de 2014

Configuracion NAT-DHCP para aulas mixtas de Linux-Windows

Un escenario con el que me encuentro frecuentemente es un aula en el que el ordenador del profesor tiene dos tarjetas de red. Con una de ellas tiene conexión con la red general y con la otra da conexión a una red privada con los ordenadores de los alumnos.

Para que esto funcione, el ordenador del profesor tiene que tener configurado el NAT y un servicio DHCP para ofrecer IP y conectividad a los ordenadores de los alumnos. La cosa se complica cuando tanto el ordenador de profesor como el de alumnos tienen arranque dual y queremos que todo funcione indistintamente tanto Windows como en Linux, independientemente de lo que tenga arrancado cada ordenador de la estancia.

El esquema que he usado es el siguiente:

  • En el profesor, el interfaz que conecta con la red del centro tiene configuración de red dinámica, recibe todo por DHCP, tanto en windows como en Linux.
  • En el profesor, el interfaz que conecta con la red privada del aula tiene configuracion IP fija, con IP 192.168.0.254, máscara 255.255.255.0 y el resto de parámetros sin definir.
  • Los ordenadores de los alumnos son fáciles de configurar: simplemente los dejamos que cojan la configuración de red por DHCP, tanto en Windows como en Linux y ya es suficiente. Recibirán direcciones fijas en función de su MAC en el rango 192.168.0.201-225 (son 25 pc). Debemos recopilar sus MACs en una lista antes de empezar la configuración.

viernes, 25 de julio de 2014

Bono social de Iberdrola para familias numerosas

Este post no va de Linux (ni de Windows :-), pero como me ha costado tanto que Iberdrola me mande los impresos para solicitar el bono social para familias numerosas y no tengo otro blog, pues lo pongo aquí y santas pascuas. Ni el correo bonosocial@iberdrola.es, ni el teléfono han funcionando, al final tuve que hacerlo por twitter y eso es una ofensa para un anti-redes sociales como yo.
 
El documento pinta tal que así:

Descárgalo aquí.

miércoles, 23 de julio de 2014

Actualizo Windows XP a SP3 y me dejan de funcionar las impresoras compartidas desde CUPS: me dicen que están desconectadas.

Tengo varias impresoras compartidas con CUPS desde mis Linux y configuradas en diversos Windows XP como impresoras de red con rutas del estilo:

http://spro-o04:631/printers/COLOR_SALAPROFESORES

Pues no que voy y actualizo el Windows XP de SP2 a SP3 y me dejan de funcionar las impresoras: aparecen como desconectadas. Mando trabajos y se quedan encolados en el Windows sin que éste llegue a conectar con el servidor CUPS del Linux. Lo primero que hago es borrar la impresora y volver a crearla. Bien, funciona. No, cuando reinicio deja de funcionar otra vez.

¿Qué está pasando?. No lo sé, pero aquí encuentro la solución. Los pasos son:

  • Entrar en regedit.
  • Ir a la clave de registro:

HKLM\System\CurrentControlSet\Control\Print\Printers\<nombre de impresora>

  • Allí, cambiar el valor de Attributes a 0X00000A50 hex o 2640 decimal.
  • Reiniciar el servicio de impresión (net stop spooler y net start spooler) o el PC.

Y ya no se vuelven a poner offline de motu propio. Aquí se explican el valor de los atributos activados con este truquito: Network, Local, DoCompleteFirst y EnableBIDI. Estos parámetros no se pueden configurar con el entorno gráfico, deben configurarse desde regedit.

Cuando esto pasa en Linux es imperdonable. Si pasa en Windows es "no sós vos, soy yo".

martes, 22 de julio de 2014

Configurar una impresora Olivetti P200 en Linux

Hace tiempo me encasquetaron la tarea de hacer funcionar una impresora USB Olivetti JobJet P200 en Linux. Ni que decir tiene que funcionaba perfectamente en Windows. El CUPS seleccionaba en la autodetección unos drivers que no funcionaban y en OpenPrinting ni siquiera aparecía. En estos días tengo que actualizar el PC donde está y he recordado como lo hice.

Tras varias pruebas fallidas con los escasos drivers para Olivetti que tiene CUPS, recordé haber leído que muchas impresoras de inyección de marcas diversas son en realidad impresoras HP 500 con la piel cambiada. Entonces me puse a probar drivers de HP Deskjet 500 hasta que di con el adecuado, que imprimía correctamente en blanco y negro y a color.

En concreto el driver es el cdj500 del modelo HP-DeskJet_500C, dentro de la colección de drivers de foomatic. Tan sólo tendríamos que buscar y seleccionar dicho driver en CUPS dentro de la lista de drivers de HP.

Si queremos dar de alta la impresora desde linea de comandos sería (la URI incluye el número de serie, habría que encontrar la URI adecuada para nuestra impresora mirando como la autodetecta CUPS):

 foomatic-configure -s cups -p "HP-DeskJet_500C" -n "OLIVETTI_P200" -N "Impresora color" -c "usb://Olivetti/Job_Jet%20P200?serial=MY31R1C1BV81" -d "cdj500"
 lpadmin -p "OLIVETTI_P200" -o PageSize=A4
 /etc/init.d/cups restart

Y ya la tenemos funcionando.

jueves, 17 de julio de 2014

No dejes para mañana lo que puedas ejecutar hoy....

El otro día tenía  que lanzar un proceso muy largo en un PC (en concreto, buscar los ficheros de mas de 100MB en una máquina concreta) y quedaba poco rato para irme a casa. Tenía varias opciones:

  1. Ejecutarlo por ssh en mi PC y dejarlo encendido hasta el día siguiente. Un poco exagerado dejar mi PC encendido sólo para eso, ¿no?.
  2. Ejecutarlo en la consola física del PC destino y dejarla abierta con la sesión del usuario root. No es una buena práctica eso de dejar sesiones de root abiertas en un PC cualquiera.
  3. Meterlo en un script y lanzarlo con el comando nohup, que permite lanzar un programa que se ejecutará aun cuando cortemos la conexión ssh. El problema su salida a pantalla se pierde en el limbo y habría que usar un fichero donde volcar la salida para ver el resultado mas tarde.
  4. Usar la utilidad screen, que me descubrió mi compañero Carlos Martín y que fué por la que me decanté y que voy a contar ahora.

domingo, 13 de julio de 2014

Cazando al servidor DHCP intruso

De repente a veces nos encontramos con que los equipos de nuestra red empiezan a recibir direcciones IP que no son de nuestro rango. La causa es que tenemos algún dispositivo en la red que está sirviendo IPs en concurrencia con nuestro servicio DHCP "oficial". Los rangos típicos son 192.168.X.X o 10.0.X.X. Vamos a ver como localizarlo y neutralizarlo.

viernes, 11 de julio de 2014

Monitorizar una impresora de red con snmpwalk

En todos los sitios donde he trabajado había una o varias "impresoras críticas", esto es, una impresora comunitaria usada por todo tipo de usuarios y que era sistemáticamente maltratada, sobreexplotada y humillada. Muchas veces esa impresora presenta un problema y nadie se ocupa de resolverlo o avisar de él, con lo cual la cosa suele pasar a mayores y el culpable es el informático, claro está.
 
Si es una impresora de red y tiene opción para activar el SNMP (esto se hace entrando en la página web de configuración de la impresora  o bien con el menú del panel de estado) , podremos acceder a su árbol MIB y obtener información sobre su estado desde un programa externo. Es el método usado por suites como Nagios, que es demasiado compleja para lo que queremos hacer nosotros.
 

miércoles, 9 de julio de 2014

Mover perfiles de usuarios Windows a otra unidad de disco

Esta va de Windows: en Linux es muy fácil cambiar de sitio un perfil de usuario cuando el disco o partición donde está ya no da más de sí. Simplemente tenemos que cambiar la ruta de su home en el fichero /etc/passwd y mover el home preservando los permisos y propietarios de los archivos a la nueva ubicación y ya está. En Windows XP es un pelín mas complicado, pero como veremos también se puede hacer.

Para ello uso un script hecho con la potente herramienta de scripting kix32 y la excelente utilidad de copiado Robocopy. Debemos descargar ambos programas y ponerlos en algun directorio del path de nuestro sistema, por ejemplo en c:\windows\system32.