Mostrando las entradas con la etiqueta Ubuntu. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Ubuntu. Mostrar todas las entradas

miércoles, 13 de noviembre de 2013

SSH avanzado - Multiples Hosts a la vez y conexión automática a través de un pivot host

Llegó el momento de administrar varios servidores, y a veces las tareas se vuelven un poco repetitivas, especialmente cuando los servers que estás administrando son replicas para obtener alta disponibilidad: las configuraciones, ubicación de archivos, paquetes instalados, etc, son iguales en todos los servers. Entonces para que ejecutar actualizaciones y cambios de configuraciones secuencialmente si se puede hacer todo junto?

Para esto recurrí a una herramienta indispensable para los sysadmins que manejan varios servers: ClusterSSH, o "el pulpo", como lo llama el gran sysadmin Germán, a quién vi manejando unos 30 servers a la vez.

ClusterSSH se conecta a varios servers a la vez, abriendo una ventana de xterm por cada server, y una ventana extra donde ingresas comandos y estos se replican a todos los servers conectados (o podés elegir a cuales desde uno de los menúes). Si querés ejecutar algo solo en un server, seleccionas la ventana adecuada y listo. Super simple.

En mi caso, el problema para usarlo era que me conecto a todos mis servers desde un server que uso como pivot, de esta forma tengo mi 'estación de trabajo' principal en la nube y puedo acceder desde cualquier lado. Como el ClusterSSH necesita X (usa xterm), levantarlo en mi server pivot no es una opción muy satisfactoria ya que acá en el fin del mundo la velocidad de conexión no es tan buena como para levantar aplicaciones X remotas.

Acá entra en juego la versatilidad de ssh, si puedo hacer que desde mi notebook se conecte a un server pasando automáticamente por el pivot, seguramente puedo usar ClusterSSH local en mi notebook sin tener que abrir el acceso a todos mis servers.

La configuración es muy simple, todo va en el ~/.ssh/config:

Host pivot
    Hostname pivot.example.com

Host server1
    ProxyCommand ssh -q pivot -nc -q0 server1

Host server2
    ProxyCommand ssh -q pivot -nc -q0 server2


Para que esto funcione, tenemos que tener acceso a pivot.example.com, y desde este server poder acceder por ssh a los servers server1 y server2 (tiene que poder resolver los host names como los ponemos aca). Si usamos usuarios diferentes en los servers, se indican con la opción User.

Para probar, desde tu máquina local haces: 'ssh server1' o 'ssh server2', ambos deberían conectarse directamente a los servers pasando por la máquina pivot.

Ahora que todo funciona, instalás 'el pulpo' y entrás a los dos (o n) servers a la vez:

$ sudo apt-get install clusterssh
...
$ cssh server1 server2

Y empieza la diversión... y si, la gente de sistemas somos vagos por definición.

Imagen sacada de la web, créditos a quién corresponda.

martes, 11 de septiembre de 2012

Cómo imprimir un pdf en formato libro

Para las clases de inglés en la oficina, generalmente tenemos que imprimir algunos apuntes o ejercicios que nos manda la profesora, y en ocasiones son varias páginas.

Como tenemos impresoras que imprimen doble faz, empece usando esta opción para reducir a la mitad la cantidad de hojas usadas. Luego empece a usar la opción de imprimir dos páginas por hoja, reduciendo de nuevo a la mitad la cantidad de hojas: Si me pasan un apunte de 8 páginas, sólo uso 2 hojas. Nada mal, considerando que después de usarlas en una o dos clases las voy a tirar a la basura (o reciclar).

Una cosa molesta de tener dos páginas por hoja, doble faz, es la incomodidad de tener que dar vuelta la hoja completa cada dos páginas, a veces tenes que andar buscando cual es la que sigue si se te mezclaron.

Entonces empecé a buscar como hacer para imprimir un pdf en formato libro: imprimir en la primer hoja las paginas 8 y 1, en la parte de atrás las 2 y 7, en la hoja 2 las páginas 6 y 3, y luego las 4 y 5. Entonces, apilando las hojas y doblándolas por el medio, te queda un librito con las páginas bien ordenadas.

Bueno, basta de chachara, ya estaba todo hecho. En Debian/Ubuntu, es solo cuestión de tener instalados dos paquetes: ghostscript y psutils. Para asegurarte que los tenés, hace un:

$ sudo apt-get install ghostscript psutils

Luego, la cosa es simple: hay que pasar el pdf a ps, y una vez que tenemos el ps lo pasamos por el programa psbook (que viene en el paquete psutils). Este programa se encarga de reordenar las hojas para imprimir en formato libro:

$ pdf2ps Documento.pdf temp.ps
$ psbook temp.ps Documento-libro.ps

Esto también se puede hacer en un solo paso, evitando generar el archivo temporal:

$ pdf2ps Docuemnto.pdf - | psbook > Documento-libro.ps

O incluso podrías volver a generar un pdf usando ps2pdf:

$ pdf2ps Docuemnto.pdf - | psbook | ps2pdf - Documento-libro.pdf

Luego lo imprimís con la aplicación que usemos siempre (evince en mi caso).

De yapa, un script que recibe el nombre archivo pdf a procesar (y opcionalmente el nombre del archivo de salida), y hace todo por nosotros:

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

#!/bin/bash

if [ -z $1 ]
then
    echo "Uso: $0 origen [destino]"
    exit 1
else
    SRC=$1
fi

if [ -z $2 ]
then
    DST=`echo "$1" | sed -e 's/.pdf$/-book.pdf/'`
else
    DST=$2
fi

pdf2ps $SRC - | psbook | ps2pdf - $DST
echo "PDF en formato libro: $DST"
----------------------------------------


jueves, 28 de junio de 2012

Wallpapers dinámicos en Ubuntu 12.04

Tenía ganas de hacer una pequeña aplicación que descargue imágenes de algún sitio y las pongo como wallpaper cada x cantidad de tiempo. Específicamente tenía ganas de actualizar el fondo del escritorio con imágenes de las webcams de San Martin de los Andes o el cerro Chapelco.

Ya que no puedo ir a Chapelco, al menos lo veo desde la compu.
Antes de programar ni siquiera una línea me encontré con algo que me resolvió el problema automáticamente: el escritorio detecta cuando el archivo que elegiste como wallpaper cambia, y en ese caso refresca la pantalla (y el esquema de colores de Unity). No tengo idea cuanto hace que esta funcionalidad esta disponible, pero funciona, y no tuve que hacer nada.

Entonces, el 'secreto' de un wallpaper que se actualice automáticamente en base a una webcam (en este caso) o cualquier otra fuente de imagenes:

Primero, guarda una imagen cualquiera en algun directorio y seteala como wallpaper. En mi caso (y en los futuros ejemplos) use Pictures/wallpaper.jpg dentro de mi home.

Lo siguiente es bajar la imagen que queres y pisar la imágen que seteaste como fondo de pantalla:

$ IMG="http://www.chapelco.com/camara1600/camara1600/cam1600i.jpg"
$ wget -q -O /tmp/temp.jpg $IMG
$ cp /tmp/temp.jpg /home/gabriel/Pictures/wallpaper.jpg
$ rm /tmp/temp.jpg

El escritorio con el fondo automatizado.
Después de hacer una prueba y ver que funcionó, lo ponés en tu crontab y listo:

$ crontab -e
...
IMG="http://www.chapelco.com/camara1600/camara1600/cam1600i.jpg"
*/5 * * * * wget -q -O /tmp/temp.jpg $IMG; cp /tmp/temp.jpg /home/gabriel/Pictures/wallpaper.jpg; rm /tmp/temp.jpg

Lo bueno es que si buscas una webcam de una zona cercana a la tuya, tenes un fondo de pantalla que no solo te muestra el clima sino que se hace oscuro de noche, lo cual es bastante cómodo cuando trabajas con la luz apagada.

De noche todo se vuelve blanco y negro.

Dos temas a tener en cuenta:
  • Bajo la imagen en el directorio /tmp porque a veces tarda en bajarla y si gnome (o quien sea) trata de pintar el fondo con una imagen a medio bajar, te va a quedar medio feo.
  • Después de bajar la imagen, probé moviéndola a la ubicación definitiva y no siempre funcionó, pero copiéndola si. No me interesó saber por que, si lo sabes comentalo.

Actualización:

Si no tenés conexión a internet en el momento que tratás de bajar el archivo, te va a pisar el fondo de pantalla con un archivo vacío. Para evitar esto, hay que hacer que el copiado del archivo temporal sea condicional:

$ [ `stat -c %s /tmp/temp.jpg` -gt 0 ] && cp /tmp/temp.jpg /home/gabriel/Pictures/wallpaper.jpg

El comanto stat -c %s devuelve el tamaño en bytes del archivo bajado, entonces solo copiamos el archivo si su tamaño es mayor a cero.

domingo, 27 de mayo de 2012

Se viene la UbuConLA 2012

Nacida de una idea en conjunto de las comunidades locales de Ubuntu en Argentina y Uruguay, los días 1 y 2 de Junio de este año se hace la primera UbuConLA: una conferencia anual, internacional e itinerante sobre Ubuntu, temas relacionados a su ecosistema y software libre.

Este año se hace en la sede de la Universidad Austral en Buenos Aires (mapa), y es totalmente gratis.
Sin embargo, hay cosas que no son gratis y alguien tiene que pagarlas, así que estan juntando fondos para algunas gráficas, etc. Si sos usuario de Ubuntu o tenes ganas de asistir a la conferencia, fijate si podes colaborar con algo, para esto se abrió un proyecto en Groofi. Con 10 dolares podés ayudar un montón, y por el precio de una entrada de cine vas a estar ayudando a organizar este evento de dos días!

Más información en el sitio de UbuConLA. De yapa, un folleto para compartir. Si quieren los PDF para imprimir y publicitar en universidades y oficinas, avisenme.


lunes, 30 de abril de 2012

Consejos para actualizar Ubuntu

Soy usuario de Ubuntu desde la primer version, 4.10. Casi ocho años de Ubuntu en varias máquinas, pero en todas hubo una constante: se instala Ubuntu y se actualiza cada seis meses. Nada de reinstalar, actualización tras actualización.
Solo en un caso, en una de las versiones del año pasado, falló la actualización y fué por no seguir los pasos que siempre sigo, y paso a comentarles.

Limpieza previa

Antes que nada, no esta nada mal hacer una limpieza antes de actualizar. De esta forma mantenés tu instalación con el mínimo de paquetes necesarios para el uso que le des a tu máquina, y a la vez el proceso de actualización tarda menos.
Las herramientas que uso son synaptic y deborphan.

Synaptic

Synaptic es muy conocido por los ubunteros mas viejos ya que era la única interfaz gráfica para instalar o actualizar paquetes. Lo bueno es que tiene unos filtros por estado de los paquetes que ayudan mucho a la hora de limpiar.
Los filtros a revisar para una limpieza son 'Locales y obsoletos', 'Auto eliminables' y 'Instalados a mano'. Ahí podemos ir repasando que cosas realmente necesitamos, y al resto le ponemos 'Eliminar Completamente.
Si sugiere eliminar otros paquetes, dale que sí a menos que los paquetes empiezen con 'ubuntu-*' (ubuntu-desktop, ubuntu-standard, etc). Esos paquetes son los meta paquetes que definen todas las dependencias de la versión que tengas y son necesarios para actualizar correctamente a la nueva versión.
Es posible que después de ejecutar la limpieza, queden nuevos paquetes en estado de eliminables, así que hay que repetir la limpieza una o dos veces.

Deborphan

deborphan es una utlilidad de línea de comando que te lista los paquetes que no están siendo usados por ningún otro paquete. Es muy útil para eliminar librerías que ya no son usadas (ya que generalmente no sabemos para que es exactamente cada lib).
Generalmente lo ejecuto en dos pasos (como super usuario), aunque si sos valiente podes hacer solo el último (que elimina todos los paquetes que lista deborphan):

deborphan
deborphan | xargs apt-get remove --purge -y

En este caso también hay que repetir el proceso hasta que quede todo limpio.

Actualización

La actualización de Ubuntu es muy simple: abrís el update-manager, y le das al botoncito que aparece cuando hay una nueva release, y esperas, y esperas, y esperas (o mejor anda a hacer alguna otra cosa).
Un solo tema a tener en cuenta: si hay paquetes para actualizar en tu versión actual, actualizalos. No cuesta nada y si llega a haber algún cambio importante en el update manager, apt o alguno de sus amigos, es mejor tener la última versión para actualizar correctamente.

Volver a limpiar

Luego de actualizar y reiniciar, tomate unos minutos más y volvé a ejecutar los dos pasos de limpieza. Luego de las actualizaciones es común que algunos paquetes queden huerfanos, o ya no sean soportados oficialmente.
Si sabes que no los usas, eliminalos, así mantenés tu instalación limpia.



Ideas? Aportes?

Espero que estos concejos te sirvan para mantenter tu Ubuntu limpio y liviano cada seis meses.