Algo de Linux: abril 2013

martes, 30 de abril de 2013

Descarga de archivos de sitios como SourceForge mediante wget

A veces tratamos de descargar mediante wget un archivo desde SourceForge u otros sitios que usan redirección o mirrors en las descargas. 

Por ejemplo: Imaginemos que quiero descargar clonezilla:

wget http://sourceforge.net/projects/clonezilla/files/clonezilla_live_stable/2.1.1-25/clonezilla-live-2.1.1-25-i686-pae.zip/download

Al intentar realizar la descarga del modo anterior, ocurrirá algo parecido a ésto:

--2013-04-30 18:52:38--  http://sourceforge.net/projects/clonezilla/files/clonezilla_live_stable/2.1.1-25/clonezilla-live-2.1.1-25-i686-pae.zip/download
Resolviendo sourceforge.net... 216.34.181.60
Connecting to sourceforge.net|216.34.181.60|:80... conectado.
Petición HTTP enviada, esperando respuesta... 302 Found
Localización: http://downloads.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.1.1-25/clonezilla-live-2.1.1-25-i686-pae.zip?r=&ts=1367340762&use_mirror=garr [siguiendo]
--2013-04-30 18:52:42--  http://downloads.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.1.1-25/clonezilla-live-2.1.1-25-i686-pae.zip?r=&ts=1367340762&use_mirror=garr
Resolviendo downloads.sourceforge.net... 216.34.181.59
Connecting to downloads.sourceforge.net|216.34.181.59|:80... conectado.
Petición HTTP enviada, esperando respuesta... 302 Found
Localización: http://garr.dl.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.1.1-25/clonezilla-live-2.1.1-25-i686-pae.zip [siguiendo]
--2013-04-30 18:52:42--  http://garr.dl.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.1.1-25/clonezilla-live-2.1.1-25-i686-pae.zip
Resolviendo garr.dl.sourceforge.net... 193.206.140.34, 2001:760:ffff:b0::34
Connecting to garr.dl.sourceforge.net|193.206.140.34|:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 117032394 (112M) [application/octet-stream]
Saving to: `download'

Es decir, que se realizará la descarga del archivo clonezilla-live-2.1.1-25-i686-pae.zip, pero se va a guardar como "download". Para evitar ésto y que el archivo se guarde con su nombre, podemos usar la opción --trust-server-name:

wget --trust-server-name http://sourceforge.net/projects/clonezilla/files/clonezilla_live_stable/2.1.1-25/clonezilla-live-2.1.1-25-i686-pae.zip/download

De este modo, el archivo se guardará con su nombre real:

Resolviendo sourceforge.net... 216.34.181.60
Connecting to sourceforge.net|216.34.181.60|:80... conectado.
Petición HTTP enviada, esperando respuesta... 302 Found
Localización: http://downloads.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.1.1-25/clonezilla-live-2.1.1-25-i686-pae.zip?r=&ts=1367341048&use_mirror=freefr [siguiendo]
--2013-04-30 18:57:28--  http://downloads.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.1.1-25/clonezilla-live-2.1.1-25-i686-pae.zip?r=&ts=1367341048&use_mirror=freefr
Resolviendo downloads.sourceforge.net... 216.34.181.59
Connecting to downloads.sourceforge.net|216.34.181.59|:80... conectado.
Petición HTTP enviada, esperando respuesta... 302 Found
Localización: http://freefr.dl.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.1.1-25/clonezilla-live-2.1.1-25-i686-pae.zip [siguiendo]
--2013-04-30 18:57:29--  http://freefr.dl.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.1.1-25/clonezilla-live-2.1.1-25-i686-pae.zip
Resolviendo freefr.dl.sourceforge.net... 158.255.96.7, 2001:1b48:10f::7
Connecting to freefr.dl.sourceforge.net|158.255.96.7|:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 117032394 (112M) [application/zip]
Saving to: `clonezilla-live-2.1.1-25-i686-pae.zip'

jueves, 25 de abril de 2013

Administrar impresoras CUPS desde la línea de comandos

La mayor parte de las veces configuramos nuestras impresoras mediante el interfaz web de CUPS, pero, en ocasiones, necesitamos administrarlas desde un terminal. Vamos a ver un ejemplo de cómo podemos hacerlo:

Supongamos que quiero añadir una impresora, a la que voy a llamar epl5900-dcha en el ordenador sprofesores2-pro.

1) Me conecto de forma remota al equipo sprofesores2-pro mediante ssh:
# ssh sprofesores2-pro
 
2) Una vez conectado a la máquina remota, lo primero que haré será listar los dispositivos de impresión:

root@sprofesores2-pro:~# lpinfo -v

file cups-pdf:/
network beh
network socket
direct parallel:/dev/lp0
direct usb://EPSON/EPL-5900
network ipp
network lpd
network http
direct scsi
serial serial:/dev/ttyS0?baud=115200

Como se puede apreciar en el listado anterior, tengo una impresora EPL-5900 conectada por USB en la máquina.

Por cierto, si quisiera obtener la información en formato largo, añado el parámetro -l:

root@sprofesores2-pro:~# lpinfo -l -v

3) Bien, pues ahora que ya tengo la información de los dispositivos detectados, obtengo la lista de drivers, filtrando para obtener sólo los de la impresora epl5900:

root@sprofesores2-pro:~# lpinfo -m|grep 5900
 
gutenprint.5.2://epson-epl-5900/expert Epson EPL-5900 - CUPS+Gutenprint v5.2.6
foomatic:Epson-EPL-5900-eplaser.ppd Epson EPL-5900 Foomatic/eplaser (recommended)
foomatic:Epson-EPL-5900-gutenprint-ijs-simplified.5.2.ppd Epson EPL-5900 Foomatic/gutenprint-ijs-simplified.5.2
foomatic:Epson-EPL-5900-gutenprint-ijs.5.2.ppd Epson EPL-5900 Foomatic/gutenprint-ijs.5.2
foomatic:Epson-EPL-5900-hpijs-pcl5e.ppd Epson EPL-5900 Foomatic/hpijs-pcl5e
foomatic:Epson-EPL-5900-lj4dith.ppd Epson EPL-5900 Foomatic/lj4dith
foomatic:Epson-EPL-5900-lj5gray.ppd Epson EPL-5900 Foomatic/lj5gray
foomatic:Epson-EPL-5900-ljet4.ppd Epson EPL-5900 Foomatic/ljet4
....

4) Una vez que tengo los dispositivos y los drivers, ya puedo añadir la impresora haciendo uso del comando lpadmin.

root@sprofesores2-pro:~# lpadmin -p epl5900-dcha -v usb://EPSON/EPL-5900 -m foomatic:Epson-EPL-5900PS-ljet4.ppd
  • Con el parámetro -p epl5900-dcha estoy indicando el nombre que va a tener la cola de impresión.
  • Con el parámetro -v usb://EPSON/EPL-5900 estoy indicando el dispositivo de impresión que quiero configurar.
  • Y con el parámetro -m foomatic:Epson-EPL-5900PS-ljet4.ppd estoy indicando el driver que voy a utilizar
5) Una vez añadida la impresora, la activo:

root@sprofesores2-pro:~# cupsenable epl5900-dcha

6) Y, por último, permito que acepte trabajos:

root@sprofesores2-pro:~# cupsaccept epl5900-dcha

Si en algun momento quisiera desactivarla, tan sólo tendría que ejecutar:

root@sprofesores2-pro:~# cupsdisable epl5900-dcha
Y si quisiera que dejara de aceptar trabajos:

root@sprofesores2-pro:~# cupsreject epl5900-dcha
Por cierto, se me olvidó decir que para comprobar el estado de la impresora podemos usar lpstat:

root@sprofesores2-pro:~# lpstat -t
En el ejemplo hemos visto cómo añadir una impresora local. Por supuesto, añadir una impresora remota es igual de sencillo. Eso sí. No olvidemos que tenemos que tener los drivers instalados en la máquina donde vamos a configurarla. Veamos un ejemplo.

Supongamos que quiero configurar la impresora del equipo sprofesores2-pro en el equipo sprofesores-pro. No tendría más que conectarme al equipo sprofesores-pro y ejecutar el siguiente comando:

root@sprofesores-pro:~# lpadmin -p epl5900-dcha-salaprofesores -v http://sprofesores2-pro:631/printers/epl5900-dcha -m foomatic:Epson-EPL-5900PS-ljet4.ppd

Por último, decir que, si queremos especificar la ubicación de la impresora, debemos utilizar el parámetro -L. Y si queremos añadir una descripción, lo hacemos con el parámetro -D. Siguiendo con el ejemplo anterior:

root@sprofesores-pro:~# lpadmin -p epl5900-dcha-salaprofesores -v http://sprofesores2-pro:631/printers/epl5900-dcha -m foomatic:Epson-EPL-5900PS-ljet4.ppd -L "Sala de profesores" -D "Impresora compartida"


viernes, 19 de abril de 2013

Reducir el consumo de ancho de banda mediante apt-cacher-ng en aulas de portátiles


En ocasiones me han llamado de un aula porque se les abre el navegador y no carga las páginas web. Y si lo pensamos bien, puede ser normal. El ancho de banda disponible vía wifi no es igual que cuando conectamos los portátiles vía ethernet y encima, tenemos tareas que instalan software o procesos como pkgsync que están consumiendo sin ninguna limitación.

En mi opinión, pienso que deberíamos minimizar y/o limitar la instalación de software en portátiles en aulas donde la conexión a la red se realiza vía wifi para lograr que el usuario disponga de ancho de banda para navegar y que los procesos de instalación de software no consuman más de lo necesario.

Para intentar solucionar este problema estoy trabajando en dos temas:
  • Cachear de forma transparente los paquetes que pidan los portátiles en cada servidor de aula.
  • Limitar el consumo de ancho de banda mediante las delay pools de squid.
De limitar el consumo de ancho de banda ya hablaremos en otro post. De momento os voy a contar cómo cachear los paquetes que van a instalar nuestros portátiles mediante apt-cacher.

La idea es que cuando un portátil descargue software, éste se cachee en el servidor de aula. De este modo, cuando los demás portátiles del aula pidan de nuevo el paquete, lo obtendrán directamente de ese servidor, reduciendo el tráfico de descarga del software a la subred local.

Para instalar el sistema tengo dos módulos:
La tarea servidor_apt-cacher-ng es muy sencilla de momento, porque tan sólo instala el paquete apt-cacher-ng y no necesito hacer configuraciones especiales.

En cuanto a la tarea cliente_apt-cacher-ng, lo único que hace es colocar un script (apt-cacher-ng-proxy) creado por mis alumnas de prácticas Sagrario e Inma. Este script se lanza al levantar el interfaz de red para activar el uso del proxy sólo cuando el portátil detecta que la ip 192.168.0.254 responde a un ping.

A continuación podéis ver los módulos y el script apt-cacher-ng-proxy:

Servidor_apt-cacher-ng

class servidor_apt-cacher-ng {

   package { apt-cacher-ng:
      ensure => latest
   }
   
}
 
Cliente_apt-cacher-ng

class cliente_apt-cacher-ng {

   file { "/etc/network/if-up.d/apt-cacher-ng-proxy":
      source => "puppet://puppetinstituto/cliente_apt-cacher-ng/apt-cacher-ng-proxy",
      owner => root, group => root, mode => 755
   }

}
 
Script apt-cacher-ng-proxy

#!/bin/bash
# Configura el proxy apt para usar el apt-cacher-ng en el aula
# Cuando el equipo está fuera del aula borra la configuración
# El script se lanza al levantar el interfaz de red
#
# Sagrario Pedraza Labrador && Inmaculada Gomez Gomez
# 12/04/2013


puertaenlace="192.168.0.254"


#obtenemos la puerta de enlace por defecto


if  ping -c 1 "$puertaenlace" > /dev/null 2>&1; then
 
 if [ ! -f "/etc/apt/apt.conf.d/02proxy" ]; then

  echo 'Acquire::http { Proxy "http://192.168.0.254:3142"; };' > '/etc/apt/apt.conf.d/02proxy';

 fi

else
    if [ -f "/etc/apt/apt.conf.d/02proxy" ]; then
 rm /etc/apt/apt.conf.d/02proxy
    fi
fi

Si os dáis cuenta, en el script se comprueba si el interfaz 192.168.0.254 responde a un ping. 
  • Si responde, se crea un archivo 02proxy en /etc/apt/apt.conf.d/ que establece el proxy a usar para la descarga de paquetes en la red 192.168.0.0
  • Si no responde, entendemos que no hay conexión o que se encuentra en otra red. Y, en este caso, borra el archivo 02proxy de /etc/apt/apt.conf.d/ para que funcione la descarga de paquetes fuera de la subred del aula. Esto me interesaba hacerlo para que el sistema de paquetes me permita actualizar el portátil cuando lo conecte a la red principal del centro.
En la imagen del principio podéis apreciar la mejora que hemos conseguido en alguna de las pruebas realizadas.

martes, 16 de abril de 2013

Módulo PUPPET para agregar el repositorio deb-multimedia a servidores LTSP, portátiles y workstations

A petición de un compañero, subo el módulo de puppet que uso para añadir el repositorio deb-multimedia a los servidores de terminales, portátiles y workstations:

https://www.box.com/s/u6kmy007t5ib0wp2yqr2

Este módulo añade la clave pública del repositorio deb-multimedia y el archivo /etc/apt/sources.list.d/deb-multimedia.list para poder usar el repositorio en nuestras máquinas.

El archivo /etc/apt/sources.list.d/deb-multimedia.list tiene los siguientes repositorios:

# Repositorios Debian Multimedia para squeeze
deb http://www.deb-multimedia.org squeeze main non-free
deb http://www.deb-multimedia.org squeeze-backports main

Tareas puppet activa-iceweasel y activa-firefox

A petición de un compañero, subo los módulos puppet activa-iceweasel y activa-firefox.

El módulo activa-iceweasel cambia el enlace de /usr/bin/iceweasel para que apunte a /usr/lib/iceweasel/iceweasel.

El módulo activa-firefox cambia el enlace de /usr/bin/iceweasel para que apunte a /opt/firefox/firefox.

Podéis descargarlos desde aquí:

viernes, 12 de abril de 2013

Lugares desde los que lanzar scripts de inicio en Debian

Cuando queremos ejecutar un script al inicio de una máquina, justo al final de cada nivel multiusuario, lo lanzamos desde el fichero:

/etc/rc.local

Ahora bien, en otras ocasiones nos interesa que el script se ejecute cada vez que se levanta el interfaz de red. En este caso, podemos colocar el script en:

/etc/network/if-up.d/

Por ejemplo: /etc/network/if-up.d/apt-cacher-ng

Y si usamos Network Manager para establecer las conexiones de red, podemos colocarlo en:

/etc/Network/Manager/dispatcher.d/

Si lo colocamos en /etc/Network/Manager/dispatcher.d/, al comienzo del nombre del script tenemos que ponerle un número que indica la prioridad de ejecución del script por parte de Network Manager. 

Por ejemplo: /etc/Network/Manager/dispatcher.d/99_apt-cacher-ng.

jueves, 4 de abril de 2013

Paquetes de firefox 20.0 para instalar en las máquinas de los IES

A continuación dejo dos enlaces para descargar los paquetes de 32 y 64 bits creados "de forma rápida" para instalar firefox 20.0 en el directorio /opt/firefox/ de las máquinas del instituto. 

Importante: Estos paquetes tan sólo colocan firefox en /opt/firefox/. No cambian el enlace de /usr/bin/iceweasel a /opt/firefox/firefox para que se siga pudiendo usar iceweasel como navegador por defecto. 

Para realizar el cambio de iceweasel a firefox o firefox a iceweasel, tengo dos tareas puppet:
  • activa-firefox 
  • activa-iceweasel 
De este modo, si quiero que los portátiles, los servidores ltsp o los workstation usen firefox, les pongo la tarea activa-firefox y si quiero que usen iceweasel, les pongo la tarea activa-iceweasel.