Algo de Linux: enero 2012

martes, 31 de enero de 2012

Imprimir en impresora HP JetDirect desde un terminal

En ocasiones necesito imprimir desde un equipo al que estoy conectado remotamente vía ssh, pero éste no tiene impresora y sé que en la red tenemos una impresora HP JetDirect. ¿Cómo puedo hacerlo?

En la máquina desde la que quiero imprimir instalo las siguientes utilidades: netcat y enscript.

# aptitude install netcat enscript


  • enscript me servirá para convertir el archivo que quiero imprimir a formato ".ps".
  • netcat me servirá para enviar el trabajo a la impresora.
Veamos un ejemplo. Imaginemos que estoy conectado a un servidor squid y quiero imprimir el fichero /etc/squid/squid.conf:

Primero convierto el archivo de texto a formato postscript y lo guardo en el archivo squid.ps:

# enscript /etc/squid/squid.conf -o squid.ps


Después, mando el trabajo a la impresora (En el ejemplo, la impresora tiene la ip 192.168.0.100):

# netcat 192.168.0.100 9100 < squid.ps

Así de sencillo.

Possible missing firmware

He realizado un upgrade un equipo de Debian Lenny a Squeeze y he observado algunos mensajes de warning del tipo:

W: Possible missing firmware /lib/firmware/........ for module ............

Por lo que he podido ver, tan sólo se encontraba instalado el paquete de firmware firmware-linux-free:

bash-4.1# dpkg -l|grep firmware
ii firmware-linux-free 2.6.32-39squeeze1 Binary firmware for various drivers in the Linux kernel


Para solucionarlo, he instalado también los paquetes firmware-linux y firmware-linux-nonfree:

# aptitude install firmware-linux firmware-linux-nonfree


bash-4.1# dpkg -l|grep firmware
ii firmware-linux 0.28+squeeze1 Binary firmware for various drivers in the Linux kernel (meta-package)
ii firmware-linux-free 2.6.32-39squeeze1 Binary firmware for various drivers in the Linux kernel
ii firmware-linux-nonfree 0.28+squeeze1 Binary firmware for various drivers in the Linux kernel

lunes, 30 de enero de 2012

libpam-ccreds: "Jugando" a cachear credenciales de usuario en Debian

Las credenciales de un usuario son su nombre de usuario (username) y su contraseña (password).

El cacheo de credenciales es muy útil para ordenadores portátiles en los que se realiza la autenticación de usuarios mediante un servidor LDAP. Si cacheamos las credenciales de un usuario, éste podrá acceder al portátil  cuando el servicio de ldap no se encuentre disponible, por ejemplo, cuando el portátil no se encuentre conectado a la red.

El paquete libpam-ccreds nos proporciona un mecanismo para cachear las credenciales de usuario y lograr que el proceso de autenticación del usuario pueda realizarse incluso cuando el servicio de red no se encuentre disponible, mediante el módulo pam_ccreds.so

Además, pone a nuestra disposición un par de herramientas muy útiles para usar en un terminal: cc_test y cc_dump.

cc_dump: Realiza un volcado de las credenciales cacheadas. Según la información del paquete, es posible que la utilidad cc_dump sea eliminada en un futuro.

Ejemplo:
administrador:/home/enavas# cc_dump 

Credential Type  User             Service  Cached Credentials  

----------------------------------------------------------------------------------

Salted SHA1      enavas           any     a591ba057c876154b4df42404393bffa2606a5cc

Salted SHA1      root             any     82559ecb4c47b4bc197d547d6b90e795ae36756b

Salted SHA1      general          any     817db704788884abdf837c6458f8ca5e3942a1c3


cc_test: Esta herramienta es muy interesante porque nos va a permitir "jugar" con las credenciales de usuario.

Personalmente, he utilizado cc_test en scripts para cachear credenciales de usuario introducidas por pantalla.

Esta es la sintaxis de cc_test:

cc_test [ -validate | -store | -update ] [service] [user] [password] [ccredsfile]


Veamos ahora qué podemos hacer con cc_test:

1) Comprobar si las credenciales de un usuario son válidas:
 # cc_test -validate any usuario password

Ejemplo:
# cc_test -validate any enavas mipassword

2) Borrar las credenciales cacheadas de un usuario:
 # cc_test -update any usuario -

Ejemplo:
# cc_test -update any enavas -

3) Cachear las credenciales de un usuario:
 # cc_test -store any usuario password


Ejemplo:
# cc_test -update any cfernandezx01 16011996

viernes, 27 de enero de 2012

Windows: Problema con el perfil al iniciar sesión en un dominio

Esto es algo con lo que últimamente me he tropezado. Una máquina windows en la que no podían iniciar sesión en un dominio los usuarios que no habían entrado en la máquina anteriormente.

El problema estaba en que, por alguna razón, el administrador no tenía permisos sobre el perfil por defecto.

Para solucionarlo, lo único que hay que hacer es mostrar la carpeta del perfil por defecto (C:\Usuarios\Default), cambiar las opciones de carpeta seleccionando "Mostrar archivos, carpetas y unidades ocultos" y darle permisos al administrador

martes, 17 de enero de 2012

Arrancar las X

Podemos iniciar el servidor X desde una consola, ejecutando simplemente:

# startx

Se iniciará el servidor X en el terminal tty7.

Si ahora ejecutamos.

# startx -- :1 

Se iniciará el servidor X en el terminal tty8.

lunes, 16 de enero de 2012

Buscar una cadena de texto en una lista de archivos

A veces necesitamos buscar una cadena dentro de un conjunto de archivos.

Por ejemplo: El otro día quería buscar los archivos que contenían la parte de red de una dirección IP dentro de los archivos de configuración que hay en el directorio /etc.

Una manera de hacerlo sería:

# find /etc -type f -name *.conf| xargs grep "172\.19\.144\."

El comando find buscaría en el directorio /etc los ficheros (-type f) con extensión .conf (*.conf). Y xargs le pasaría la lista al comando grep para buscar la cadena ("172\.19\.144\.") dentro de cada uno de los archivos de la lista.

viernes, 13 de enero de 2012

Convertir imágenes de VirtualBox a KVM

Una forma de convertir una imagen VDI de VirtualBox a KVM es transformar primero la imagen VDI a formato RAW y después la imagen RAW a un formato específico de KVM como por ejemplo QCOW2:

1.- Convertimos la imagen VDI a RAW:

# VBoxManage clonehd squeeze.vdi squeeze.raw --format RAW

2.- Convertimos de formato RAW a QCOW2:

# qemu-img convert -f raw -O qcow2 squeeze.raw squeeze.qcow2

El problema es que si nuestra imagen en formato VDI tan sólo ocupa 5GB para un disco duro definido de 20GB, la imagen en formato RAW ocupara 20GB. Lo que significa que necesitaremos tener un espacio libre en disco duro de al menos 20GB+5GB. El problema es mayor cuanto más grandes son las imágenes.

Una vez terminado el proceso de conversión, podemos borrar la imagen RAW, puesto que ya no la vamos a necesitar.

miércoles, 4 de enero de 2012

Primer acceso a nuestro router después de flashearlo con OpenWRT

Una vez flasheado nuestro router, tendrá la siguiente ip por defecto: 192.168.1.1

Lo conectaremos mediante un cable ethernet a nuestro equipo y configuraremos la interfaz eth0 del equipo con una ip  dentro del mismo rango.

Por defecto, el router no tendrá contraseña. Así que nos conectaremos a él mediante telnet:

# telnet 192.168.1.1

Y ejecutaremos el comando passwd como se nos pide en pantalla para establecer una contraseña de acceso:


# passwd


Una vez establecida la password, ya podremos conectarnos al router vía ssh de la siguiente manera:

# ssh root@192.168.1.1

Actualizar firmware router C54APRA con firmware backfire 10.03.1 (21 diciembre 2011)

Voy a volver a "trastear" un poco con mi router, así que lo primero que haré será actualizar el firmware a la última versión a día de hoy, concretamente  backfire 10.03.1 (del 21 diciembre 2011)

http://downloads.openwrt.org/backfire/10.03.1/ar7/openwrt-ar7-squashfs.bin

Como ya sé que la IP adam2 de mi router es la 192.168.1.199:
  1. Conecto la alimentación del router.
  2. Conecto el router a mi equipo mediante un cable ethernet.
  3. Abro un terminal y  configuro la eth0 con una IP del rango 192.168.1.x.
  4. Me sitúo en el directorio donde he descargado el archivo con el firmare.
  5. Y hago ftp a la dirección adam2 de mi router:

ftp 192.168.1.199

Como siempre, el router nos mostrará un mensaje y nos perguntará un usuario y una password. Introduciremos adam2 como usuario y como password:

Connected to c54apra (192.168.1.199).
220 ADAM2 FTP Server ready.
Name (192.168.1.1:user): adam2
530 Please login with USER and PASS.
SSL not available
331 Password required for adam2.
Password: adam2


Y veremos un mensaje en el que nos dice que el usuario adam2 se ha logueado correctamente:

230 User adam2 successfully logged in.
ftp>


En el prompt de ftp establecemos el modo de transferencia binario e indicamos, por decirlo de algún modo, que vamos a flashear:

ftp> binary
ftp> quote MEDIA FLSH


El siguiente paso, será transferir el archivo:

ftp> put "openwrt-ar7-squashfs.bin" "c mtd4"

Tardará un poquito en flashearlo, pero no demasiado y veremos que nos muestra el resultado de la transferencia:

local: openwrt-ar7-squashfs.bin remote: c mtd4
200 Port command successful.
150 Opening BINARY mode data connection for file transfer.
226 Transfer complete.
2818052 bytes sent in 37.25 secs (73.9 kB/s)



Una vez que termine, veremos de nuevo el prompt de ftp:

ftp>

Reiniciamos el router:

ftp>quote REBOOT

Y salimos de ftp:

ftp>quit

Y ya tendremos nuestro router funcionando con la última versión de OpenWRT backfire 10.03.1 (21 diciembre 2011)

Por cierto, esta vez he podido flashearlo sin problemas desde un terminal de linux.