jueves, 11 de diciembre de 2014

Manejo de Colas de Impresión

Hoy, después de solucionar un problema con una tarea, las impresoras han empezado a imprimir los trabajos que tenían pendientes, por lo que he tenido que vaciar las colas de impresión de los equipos afectados.
Me he ayudado de la utilidad dsh para pasársela a los equipos con el comando:

cancel Impresora

donde Impresora es el nombre de la impresora en el equipo.

Si queremos pausar o deshabilitar una impresora:

cupsdisable Impresora


Si queremos reanudarlas

cupsenable Impresora

miércoles, 19 de noviembre de 2014

Host Virtuales en Apache con Debian Wheezy

Como estoy preparando el tercer servidor como servidor web me he estado peleando un par de días con los Host Virtuales.
Esto es, tengo en el servidor web varios "servidores", por decirlo así, diferentes. Uno para las fotos del centro, otro para ficheros, paquetes, etc.....
A cada uno se accede poniendo un nombre en el navegador: p.e. FotosIeso, y el servidor apache ve a qué carpeta se tiene que dirigir y lo muestra. Aparentemente son independientes entre sí.
Pues bien, este sistema lo tenía con el anterior servidor en debian Squeeze, pero ahora, con el cambio a Wheezy no conseguía hacerlo funcionar.
Puedes ver como se crea en el siguiente enlace:

http://www.servidordebian.org/es/wheezy/internet/http/start

y aquí puedes ver un poco más específico de los host virtuales:

http://www.ubuntufacil.com/2013/12/hosts-virtuales-con-apache2-en-ubuntu-13-10/

Pues bien creaba ficheros con los datos de cada host virtual y al intentar enlazarlo me daba error, pero por mucho que buscaba no encontraba, hasta que dí con la solución. Como es un foro, pego el enlace pero la solución está dentro de las respuestas:

http://www.daboweb.com/foros/index.php?topic=38922.0

Resumiendo en /etc/apache2/sites-enabled/default, está la configuración por defecto del servidor apache, éste fichero está enlazado a /etc/apache2/sites-available/000-default.
Pues bien, hay que desenlazarlo:

root@servidorweb:/etc/apache2/sites-available# a2dissite default

Copiamos el fichero default con otro nombre. en mi caso repositorioiesburguillos y cambiamos los datos, es decir ServerName, ServerAdmin, DocumentRoot y el Directorio. Quedaría tal que así
<VirtualHost *:80>
ServerAdmin iesburguillos@iesburguillos.com
Servername repositorioiesburguillos
DocumentRoot /var/www/repository
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/repository>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from 172.17.164.0/24
# allow from all

</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from 172.17.164.0/24
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

y ya lo enlazamos con:

root@servidorweb:/etc/apache2/sites-available# a2ensite repositorioiesburguillos

Así procedemos con todos los host virtuales que deseemos.


martes, 11 de noviembre de 2014

Bonding en servidor

Actualizando el tercer servidor, me he encontrado con una cosa de las que tenía pendientes hace mucho tiempo y es realizar bonding.
La idea es realizarlo con los servidores nfs  y ldap que son los que más tráfico tienen, pero voy a probarlo en este tercer servidor.
Lo he sacado de la siguiente página:

http://www.servidordebian.org/es/wheezy/config/network/bonding

resumo:

Instalar paquete ifenslave-2.6 y ojo, meterlo dentro del mayhave.

Modificar el /etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo eth0

iface lo inet loopback


iface eth0 inet static
        address 192.168.0.254
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto bond0

iface bond0 inet static
        bond-slaves eth3 eth2
        bond-mode balance-rr
        bond-miimon 100
        bond-primary eth3 eth2

        address XX.XX.XX.30
        netmask 255.255.255.0
        network XX.XX.XX.0
        broadcast XX.XX.XX.255
        gateway XX.XX.XX.XX

Tengo tres interfaces de red:
Eth0 es una red local donde están conectados los thinclients del aula
Eth3 es la tarjeta de red conectada al centro y quedará como principal del bonding
eth2 es la añadida al bonding.

Al reinicar networking y luego el equipo, me doy cuenta que si bien tengo acceso a la red del centro, no tengo salida a internet.
Es debido a que en la instalación me ha borrado el contenido de /etc/resolv.conf y por lo tanto no resuelve.
Como veo que pone que no se debe editar a mano ya que se genera automáticamente, veo que hay que añadirlo en /etc/resolvconf/resolv.conf.d/base:

root@servidorweb:~# cat /etc/resolvconf/resolv.conf.d/base

search burguillosdelcerro 
nameserver XX.XX.XX.XX



Instalación de paquetes con dpkg. Forzar dependencias.

Algunas veces nos hemos descargado un paquete que no se encuentra en los repositorios desde la web del desarrollado.
En algunas ocasiones no nos deja instalarlo debido a que no se cumplen las dependencias.
En mi caso quise instalar la última versión de google-chrome.

root@servidorweb:/tmp# dpkg -i google-chrome-stable_current_i386.deb
Seleccionando el paquete google-chrome-stable previamente no seleccionado.
(Leyendo la base de datos ... 431340 ficheros o directorios instalados actualmente.)
Desempaquetando google-chrome-stable (de google-chrome-stable_current_i386.deb) ...
dpkg: problemas de dependencias impiden la configuración de google-chrome-stable:
 google-chrome-stable depende de libnss3 (>= 3.14.3).
 google-chrome-stable depende de xdg-utils (>= 1.0.2).

dpkg: error al procesar google-chrome-stable (--install):
 problemas de dependencias - se deja sin configurar
Procesando disparadores para desktop-file-utils ...
Procesando disparadores para gnome-menus ...
Procesando disparadores para man-db ...
Procesando disparadores para menu ...
Se encontraron errores al procesar:
 google-chrome-stable



 SSin embargo si vemos las versiones de los paquetes que dan dependencias incumplidas:

  dpkg -l libnss3
Deseado=Desconocido/Instalar/Eliminar/Purgar/Retener
| Estado=No/Instalado/Config-files/Desempaquetado/Medio-conf/Medio-inst/espera-disparo/pendiente-disparo
|/ Err?=(ninguno)/Requiere-reinst (Estado,Err: mayúsc.=malo)
||/ Nombre         Versión     Arquitectura Descripción
+++-==============-============-============-=================================
ii  libnss3:amd64  2:3.15.1-1~b amd64        Network Security Service librarie
root@servidorweb:/tmp# dpkg -l xdg-utils
Deseado=Desconocido/Instalar/Eliminar/Purgar/Retener
| Estado=No/Instalado/Config-files/Desempaquetado/Medio-conf/Medio-inst/espera-disparo/pendiente-disparo
|/ Err?=(ninguno)/Requiere-reinst (Estado,Err: mayúsc.=malo)
||/ Nombre         Versión     Arquitectura Descripción
+++-==============-============-============-=================================
ii  xdg-utils      1.1.0~rc1+gi all          desktop integration utilities fro







Por lo tanto puedo probar a forzar la instalación del paquete google-chrome con --force-depends o --force all para ver si funciona.

 root@servidorweb:/tmp# dpkg -i --force depends google-chrome-stable_current_i386.deb
(Leyendo la base de datos ... 431443 ficheros o directorios instalados actualmente.)
Preparando para reemplazar google-chrome-stable 38.0.2125.111-1 (usando google-chrome-stable_current_i386.deb) ...
Desempaquetando el reemplazo de google-chrome-stable ...
dpkg: google-chrome-stable: problemas de dependencias, pero se configurará de todas formas
 tal y como se solicitó:
 google-chrome-stable depende de libnss3 (>= 3.14.3).
 google-chrome-stable depende de xdg-utils (>= 1.0.2).

Configurando google-chrome-stable (38.0.2125.111-1) ...
Procesando disparadores para desktop-file-utils ...
Procesando disparadores para gnome-menus ...
Procesando disparadores para man-db ...
Procesando disparadores para menu ...
root@servidorweb:/tmp#



Si no vemos que una vez instalado no funciona correctamente puedo volver atrás a instalar la versión de los repositorios.

Aquí podemos ver las opciones de dpkg --force:

 dpkg --force-help
opciones de forzado de dpkg - controlan el comportamiento cuando hay problemas:

 avisa pero continúa:      --force-<cosa>,<cosa>,...
 se detiene si hay error:  --refuse-<cosa>,<cosa>,... | --no-force-<cosa>,...
 Cosas que se pueden forzar:
  [!] all                Activa todas las opciones de forzado.
  [*] downgrade          Reemplaza el paquete con una versión menor.
      configure-any      Configura cualquier paquete que pudiera ayudar a éste.
      hold               Procesa paquetes accesorios aunque estén bloqueados
      not-root           Intenta (des)instalar cosas incluso sin ser root.
      bad-path           No se pueden encontrar programas importante en PATH, seguramente cause problemas
      bad-verify         Instala un paquete aunque falle la comprobación de autenticidad
      bad-version        Procesa incluiso paquetes con versiones incorrectas
      overwrite          Sobreescribe un fichero de un paquete con otro.
      overwrite-diverted Sobreescribe un fichero desviado con una versión no desviada.
  [!] overwrite-dir      Sobreescribir el directorio de un paquete con el fichero de otro
  [!] unsafe-io          No utiliza las operaciones seguras de E/S cuando se realiza desempaqueta.
  [!] confnew            Utiliza siempre los archivos de configuración nuevos, no pregunta.
  [!] confold            Utiliza siempre los archivos de configuración antiguos, no pregunta.
  [!] confdef            Utiliza la opción predeterminada para los ficheros de
                configuración nuevo si están disponibles,
                sin preguntar. Si no se encuentra ninguno
                predeterminado preguntará, a menos que se
                utilicen también alguna de las opciones confold
                o confnew.
  [!] confmiss           Instala siempre los ficheros de configuración que faltan.
  [!] confask            Ofrece el reemplazo de ficheros de configuración sin versiones nuevas.
  [!] architecture       Procesa incluso los paquetes con arquitectura errónea o sin arquitectura.
  [!] breaks             Instala aunque pudiera romper otro paquete.
  [!] conflicts          Permite la instalación de paquetes en conflicto.
  [!] depends            Convierte todos los problemas de dependencias en avisos.
  [!] depends-version    Convierte todos los problemas de versiones de dependencias en avisos.
  [!] remove-reinstreq   Elimina los paquetes que precisan instalación.
  [!] remove-essential   Elimina un paquete esencial.

ATENCIÓN - el uso de las opciones marcadas con [!] puede dañar seriamente
su instalación. Las opciones de forzado marcadas con [*] están activas
por omisión.

jueves, 6 de noviembre de 2014

Impresoras en red en el centro

Hoy en un correo preguntaban el modo de añadir impresoras en red en el centro, y me va a servir de escusa para documentarlo.

Preparar la impresora.

Si queremos que la impresora sea accesible por red desde todo el centro tenemos que conocer su ip.
Por otra parte es interesante que nosotros decidamos que ip queremos que tenga para que no esté dentro del rango de dhcp y además sea fija y no cambie por caprichos del servidor dhcp.
Tenemos al menos dos formas para hacerlo:

  • 1. Ponerle la ip fija directamente a la impresora mediante su interface web o mediante los menús de la propia impresora ( si tiene display y esa opción). Si queremos acceder por la interface web, debemos de saber que ip coge. Para ello lo primero, lógicamente es conectarla a la red del centro e imprimir un informe de la impresora. Allí figurará tanto ip cogida como mac. Si accedemos via web, sólo tendremos que cambiar la ip a la que queramos en el apartado correspondiente. Normalmente hay que iniciar sesión y entrar dentro de configuración y apartado tcp/ip o ipv4.


  • La otra opción, que es perfectamente compatible con ésta, es crearle dentro de nuestro ldap un objeto con su nombre y asignarle una ip fija a su mac. En este caso, lógicamente también tenemos que haber enganchado el cable de red y saber cual es su mac desde el informe de la impresora. 
Entramos dentro de la base de datos ldap y creamos un objeto printer-host dentro de la rama Netgroup.  
Aquí podemos ver el mio.

Si no tenemos ese objeto es fácil crearlo, entramos en otro, por ejemplo all-host y le damos a copiar objeto cuando nos pida el nuevo nombre en DN destino, cambiamos all-host por printer-host y le damos al botón de copiar. Ya se habrá creado.
Luego sólo tenemos que añadir las impresoras a ldap. Para ello uso un script realizado por los compañeros  que se llama addprinter.sh. Lo ejecutamos en ldap de la forma:

sh addprinter.sh NombreImpresora ip mac

Éste es el contenido:

#!/bin/bash

#Añade un switch al directorio LDAP

if [ $# -ne 3 ]; then
echo "Uso: $0 printername ip mac"
exit
fi


dominio=`hostname -d`
host=$1
ip=$2
ip1=`echo $2 | cut -d"." -f1`
ip2=`echo $2 | cut -d"." -f2`
ip3=`echo $2 | cut -d"." -f3`
ip4=`echo $2 | cut -d"." -f4`
mac=`echo $3 |tr '[:lower:]' '[:upper:]'`
echo dominio: $dominio
echo printer: $host
echo dominio: $ip
echo dominio: $dominio
echo pulsa enter
read
FICHERO=$host.$dominio.ldif
if [ -e $FICHERO ]; then
rm $FICHERO
fi

echo "
dn: dc=$ip4,dc=$ip3,dc=$ip2,dc=$ip1,dc=in-addr,dc=arpa,ou=hosts,dc=instituto,dc=extremadura,dc=es
changetype: add
objectclass: dNSDomain2
objectclass: domainRelatedObject
dc: $ip4
associateddomain: $ip4.$ip3.$ip2.$ip1.in-addr.arpa
PTRRecord: $host.$dominio

dn: dc=$host,dc=$dominio,ou=hosts,dc=instituto,dc=extremadura,dc=es
changetype: add
objectclass: dnsdomain2
objectclass: domainrelatedobject
dc: $host
associateddomain: $host.$dominio
ARecord: $ip

dn: cn=$host,cn=group1,cn=INTERNAL,cn=DHCP Config,dc=instituto,dc=extremadura,dc=es
changetype: add
cn: $host
objectClass: top
objectClass: dhcpHost
dhcpHWAddress: ethernet $mac
dhcpStatements: fixed-address $host

dn: cn=printer-hosts,ou=Netgroup,dc=instituto,dc=extremadura,dc=es
changetype: delete

dn: cn=printer-hosts,ou=Netgroup,dc=instituto,dc=extremadura,dc=es
changetype: add
cn: printer-hosts
objectClass: top
objectClass: nisNetgroup" >> $FICHERO
#echo "dn: cn=printer-hosts,ou=Netgroup,dc=instituto,dc=extremadura,dc=es
#changetype: modify" >> $FICHERO
ldapsearch -xLLL -h ldap -b ou=Netgroup,dc=instituto,dc=extremadura,dc=es "(cn=printer-hosts)" | grep nisNetgr
(1)oupTriple | while read triple
do
echo $triple >> $FICHERO
done

grep "nisNetgroupTriple.*$host" $FICHERO > /dev/null
if [ $? -ne 0 ]; then
echo "nisNetgroupTriple: ($host,-,-)" >> $FICHERO
fi


echo "Añadiendo $host.$dominio a ldap con ip=$ip y mac=$mac"
more $FICHERO
ldapadd -c -x -h ldap -W -D "cn=admin,ou=People,dc=instituto,dc=extremadura,dc=es" -f $FICHERO

(1) Ojo linea cortada

Este script nos crea objetos con el nombre de la impresora en las ramas: DHCPConfig, Hosts/dominiodelcentro, hosts/arpa/subip1/subip2/subip3/ip4 además de añadirnos la impresora al NisNetgroupTriple de la rama Netgroup/printer-host que hemos creado.Hay otro procedimiento más sencillo que es añadir la impresora desde la utilidad controlies y añadirla como un workstation normal. No obstante creo que así es mejor ya que están todas las impresoras agrupadas y localizadas.Después del reinicio de impresora ya tendremos la impresora con la ip que hemos decidido.

Añadir la impresora a los equipos.

Antes de añadir la impresora a los equipos, tenemos que descargar el archivo .ppd (para linux) y en su caso si queremos ponerla en equipos windows, los drivers de dicha impresora desde la página del fabricante.
Para añadir la impresora también tenemos varios métodos.
  • El más intuitivo es desde la interface web de cups. Abrimos una pestaña en el navegador web y ponemos en la barra de dirección localhost:631
Desde la pestaña Administración tenemos el botón de Impresoras/Añadir impresora.
Nos mostrará las impresoras encontradas por el sistema. Pinchamos en la que queremos añadir y botón siguiente.


Nos pedirá que pongamos nombre, descripción y ubicación, y botón siguiente.

Y por último le tenemos que indicar el driver. Podemos elegir de la lista, él nos indica el aconsejado, o en Seleccionar archivo le podemos decir que nos coja el que hemos descargado, que es lo que haremos.

Y ya la última ventana nos permitirá que cambiemos las opciones predeterminadas: color o blanco y negro, doble cara, etc....
  • Un segundo método es añadirla desde un terminal con el comando lpadmin, que tendría más  o menos la siguiente forma:
/usr/sbin/lpadmin -p ConserjeriaB-N -L Conserjeria  -P /etc/cups/ppd/RicohB-N.ppd -v socket://172.17.164.8
 lpadmin -p ConserjeriaB-N -E

donde le indicamos en el siguiente orden: NombreImpresora, Localización(opcional), ubicación del archivo .ppd, ip. La última línea -E es para habilitarla. 
Con -o también podemos indicarle opciones y con la -u opciones sobre usuarios.
Todo esto lo podemos ver en la documentación del comando lpadmin.

Estos dos primeros métodos tienen el inconveniente de que hay que ejecutarlos cada equipo individualmente. Si lo que queremos es añadir la impresora en varios equipos, lo ideal es hacer una tarea con puppet para que se añadan en aquellos que queramos.

Automatización con puppet.

Para ello creamos una tarea donde le indicamos la o las impresoras a añadir.
Yo al principio cree una tarea de la forma:




class comunes-poner-impresoras{



exec { "pone-impresora-Color":
command => "/usr/bin/wget http://repositorioiesburguillos/Drivers/LinEx/RicohColor.ppd;/usr/sbin/lpadmin
 (1)-p ConserjeriaColor -L Conserjeria  -P /etc/cups/ppd/RicohColor.ppd -v socket://172.17.164.7 &&   (1)lpadmin -p ConserjeriaColor -E",
       path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
cwd => "/etc/cups/ppd/",
       unless => "cat /etc/cups/printers.conf|grep \"Printer ConserjeriaColor\"",

}
exec { "pone-impresora-SalaProfes":
command => "/usr/bin/wget http://repositorioiesburguillos/Drivers/LinEx/KyoceraFS4020.ppd  ;  (1)/usr/sbin/lpadmin -p Sala-Profesores -L Conserjeria  -P /etc/cups/ppd/KyoceraFS4020.ppd  -v  (1)socket://172.17.164.6 && lpadmin -p Sala-Profesores -E",
       path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
cwd => "/etc/cups/ppd/",
       unless => "cat /etc/cups/printers.conf|grep \"Printer Sala-Profesores\"",

}
    
}
(1) Ojo linea cortada
Donde vemos que mediante un exec por impresora, descargamos el archivo .ppd  del servidor repositorioiesburguillos donde está colocado y luego mediante lpadmin añadimos la impresora.

Luego he creado un define llamado anadirImpresora.pp (se coloca en /etc/puppet/defines con este contenido:

define anadirImpresora( 
$impresora,
$localizacion,
$puerto,
$archivoPpd,
$opciones='printer-error-policy=abort-job  printer-is-shared=true',
$usuariosPermitido='all',   # usuario o @grupo o usuario,usuario
$usuariosProhibidos='none' # usuario o @grupo o usuario,usuario 
 )
# inicializamos las variables
 {
  exec { "ponerimpresora":
command => "/usr/sbin/lpadmin -p $impresora -L $localizacion  -P $archivoPpd  -v $puerto -o $opciones;   (1)/usr/sbin/lpadmin -p $impresora -u allow:$usuariosPermitidos -u deny:$usuarios Prohibidos;   (1)/usr/sbin/lpadmin -p $impresora -E; /etc/init.d/cups restart",
unless => "/bin/cat /etc/cups/printers.conf|/bin/grep \"\<Printer $impresora\"\> 1>/dev/null",
       }
}

(1) Ojo linea cortada
Lo que hace es definir un recurso llamado anadirImpresora que luego podremos utilizarlo en nuestras tareas.
Vemos que he implementado también opciones que se pueden establecer. Por defecto para que aborte el trabajo si hay un error y para que la impresora no se comprata.
Por otra parte también se puede establecer política de usuacios, por defecto permitidos todos. Podemos cambiar para prohibir a @students, etc...

Así la nueva clase quedaría algo así:


import "/etc/puppet/defines/*.pp"

class comunes-poner-impresoras{
anadirImpresora{ "prueba":
impresora => "prueba",
puerto => "socket://172.17.164.7",
archivoPpd => "/etc/cups/ppd/RicohColor.ppd",
localizacion => "prueba",
      }  
}

Como vemos importa la definición del recurso y le pasa los datos de la impresora añadir. Ya el recurso se encarga de habilitarla.

Preparando el Tercer servidor


Como tenemos una nueva imagen, voy a migrar el tercer servidor del centro al nuevo sistema.
Ni que decir tiene que antes de realizar nada lo más lógico es hacer una copia de seguridad. Yo tengo automatizadas los backups, entonces ya lo tendré hecha, no obstante lo que sí tengo que copiar es el crontab.
en consola hago crontab -e y copio el contenido y lo guardo junto con las copias de seguridad. Esto es para restuararlo después.
Debido a que este tercer servidor se utiliza también como servidor ftp, repositorio, etc... necesita instalar paquetes adicionales , etc...

Lo primero, como es lógico es instalar la nueva imágen, como la imagen de momento está en pruebas voy a utilizar otro disco duro para ello.
Por otra parte, siempre tengo que tener en cuenta que debido precisamente a esto, a que el sistema se va renovando cada aproximadamente dos años, tengo otros dos discos duros en los que guardo determinados archivos. Estos dos discos después de la instalación le diré en /etc/fstab que me los monte en sus directorios correspondientes.
/var/www/ en el que tengo los contenidos del servidor apache accesible solo desde dentro del centro.
/var/imagenes donde tengo las imágenes que utilizo para clonar los equipos con clonezilla
/var/backups donde se van haciendo y guardando los backups incrementales con rsync.

Clonar la imagen con clonezilla

Lo primero que hay que hacer lógicamente es restaurar la imagen en el equipo. Como ya he dicho antes lo hago con clonezilla, y como quiero mantener los datos antiguos por si hay algún problema, desconecto la alimentación de los discos duros que tengo y engancho el otro, así la instalación se hace sólo sobre uno y al iniciar no me dará problemas.
También en este momento tenemos que tener precaución de que no se ejecuten las tareas puppet en esta máquina, ya que puede ser que se ejecuten tareas del sistema anterior (instalación de paquetes, configuraciones,...) que nos lleven a problemas. Para ello lo mejor es ponerla como nodo de pruebas en la clase-específica y comentar todas las líneas con tareas, así no se ejecutará ninguna, pero comprobaremos que puppet funciona correctamente.

Probar el equipo

Una vez restaurada la imagen, comprobamos que funciona correctamente, que nos permite autentificar los usuarios bien, que monta las carpetas del servidor nfs correctamente, que se ejecuta puppet, etc...
Una vez esto ya si que podemos poner en la clase-específica de puppet las tareas comunes a realizar y que no sean específicas de la distribución anterior, eso sí probar las tareas una a una por si dieran problemas, para no volvernos locos. En mi caso pasaría tareas de cambiar contraseña root, añadir authorized, añadir hosts, etc....
Una vez hecho esto ya podemos conectar la alimentación de los discos antiguos y en la bios le ponemos que arranque desde el disco duro nuevo.
Modificamos el /etc/fstab para que nos reconozca y nos monte los discos donde tenemos información:

# /var/backups  was on /dev/sdb1 during installation
/dev/sdc3 /var/backups          ext3    defaults        0       2

/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0
#/dev/sdb1       /media/usb0     auto    rw,user,noauto  0       0
#/dev/sdb2       /media/usb1     auto    rw,user,noauto  0       0
# /var/www  was on /dev/sdb1 during installation
/dev/sdb1 /var/www            ext3    defaults        0       2
# /var/imagenes  was on /dev/sda6 during installation
/dev/sda6 /var/imagenes           ext4    defaults        0       1

Generar clave rsa

Como este servidor hace tareas en otros equipos: sistema de backups, etc. tengo que crear una relación de confianza entre él y los otros a los que tengo que acceder.
Creo la clave rsa:

 ssh-keygen -t rsa -b 1024

 Crea un fichero id_rsa.pub.
Esta es la clave rsa del servidorweb. Para acceder a otro equipo añadimos la clave al final del archivo /root/.ssh/authorized_keys.
Es decir renombro el archivo y lo envío al equipo en cuestión y 

cat id_rsa.pub.servidorweb >> /root/.ssh/authorized_keys

Al reinstalar el servidorweb, la clave ha cambiado por lo que la tengo que eliminar del resto de los equipos y poner la nuevo. En los servidores nfs y ldap lo hago a pelo y para el resto de equipo tengo tarea puppet comunes-anadir-authorized que se encarga de modificarla.

Añadir Scripts

Tengo varios scripts que realizan determinadas labores. Es por ello que los tengo que copiar desde el disco antiguo al nuevo. Los tengo en /usr/local/bin/ y entre ellos estan:
- Scripts de Copia de Seguridad
El script backup_servers.sh se ejecuta una vez a la semana ya que está metido en el crontab.
Llama a  tantos scripts, que están en carpeta backup, como equipos que se quieran hacer copias de seguridad. Para cada uno de ellos hay dos archivos:
bacup_equipo.sh el script que realiza copia incremental con rsync que se guarda en /var/backup del servidorweb
backup_equipo.excluded que contiene los directorios y archivos, de los que no hay que sacar copias seguridad.

- backupltsp.sh 
Hace copia de archivos de configuración de los servidores ltsp (por si hay que clonarlos) los pone en el propio servidorweb:/var/backups/backupltsp/$servidoraula

- quitaacentos.sh   es un script que se utiliza para eliminar las vocales acentuadas, ñ ,etc..... 
Se solía utilizar sobre el fichero xml descargado de rayuela con los datos de alumnos y profesores con los datos de importación.
Esta función también se puede realizar con el siguiente comando iconv --from-code=ISO-8859-1 --to-code=UTF-8 fichero-origen > fichero-destino.

- Scripts de inicio de Curso :
altaGeneraCSV.sh A partir del fichero xml exportado desde rayuela genera un fichero csv con los campos necesarios para dar de alta usuarios en googleDocs.
AltaGeneraMoodle.sh idem con los campos de los usuarios para darlos de alta en plataforma moodle. 
altaGeneraCSVyMoodle.sh Genera dos ficheros, uno para google y otro para moodle.

- listado_inicio_curso.sh
Hace un listado de alumnos en formato html
"Uso: listado_inicio_curso.sh <fichero xml alumnos> <fichero xml grupos> <fichero xml profesores> <fichero html salida> [<grupo a procesar>]" 
posibilidad de ordenar cada tabla de grupo por diferentes campos.
ORDENAR_POR=[apellidos|nie|password|usuario|nombre|nada]

- generacion_listados_inicio_curso_pdf.sh
Idem que el anterior pero lo exporta a formato pdf
"Uso: generacio_listados_inicio_curso.sh <fichero xml alumnos> <fichero xml grupos> <fichero xml profesores> <fichero html salida> [<grupo a procesar>]" 
posibilidad de ordenar cada tabla de grupo por diferentes campos.
ORDENAR_POR=[apellidos|nie|password|usuario|nombre|nada]

- generacion_listados_alumnos_grupos.sh
Tambien listado por grupo.
Uso: $0 <fichero xml alumnos> <fichero xml grupos> <fichero xml profesores> <fichero txt salida>

- avisos/avisos.jar
Programa creado por el compañero Juan Antonio que permite enviar avisos a pantalla de login de profesores, alumnos o cursos.

Más Configuraciones

Tenemos un montón de archivos de configuración que reescribir y/o modificar. Lógicamente los podemos copiar de la instalación anterior montando el disco antiguo en /mnt/ copiando. Entre ellos:
/etc/hosts con el dominio ip y nombre propio del servidorweb.
/etc/network/interface por si tengo alguna configuración especial: bonding, puerta de enlace predeterminada distinta, etc...
También los ficheros de la copia de seguridad de los ltsp si fueran necesarios:
/etc/udev/rules.d/70-persistent-net
/etc/hostapd/hostapd.conf
etc...

Instalar Servidor FTP

Tenemos un servidor ftp que lo utilizamos para los subir los escaneos que se hacen en las copiadoras.
Instalamos para ello el paquete proftpd-basic. Instalaremos un servidor independiente. Puedes ver un tutorial aquí:
http://www.redeszone.net/gnu-linux/proftpd/

Básicamente lo que he cambiado en el fichero de configuración /etc/proftpd/proftpd.conf únicamente es el nombre del servidor en :

ServerName                      "myftp"

y la carpeta donde se guardan los escaneos e indicarle que todos los usuarios van a esa carpeta:

DefaultRoot                     /srv/ftp/upload 

El procedimiento es el siguiente: los conserjes escanean las cosas ( las impresoras están configuradas para que lo suban a ftp) y luego los profesores son lo que tienen que acceder a ellas. Por ello utilizo un único usuario para acceder a ellas y común para todos que es el usuario ftp. Regularmente hago limpieza, es decir paso los archivos mas antiguos a otra carpeta /srv/ftp/antiguos, que no es accesible desde ftp, por si hicieran falta en otro momento. 
Hay que crear dicho usuario en el equipo. En esta ocasión me he encontrado que ya estaba creado, por lo que despues de hacer unas pruebas he tenido que borrarlo (deluser ftp), para volverlo a crear, indicándole un directorio home para que copie el skel. el home del ftp no lo vamos a utilizar así que lo podemos borrar luego sin miedo. La orden para crear el usuario es:

root@servidorweb:/# adduser ftp --home /srv/ftp/prueba

Después de esto ya solo queda reiniciar servicio y probar que funciona y logea, bien a través de un navegador o bien desde consola:

root@servidorweb:/mnt# ftp ftpiesburguillos

Vemos que conecta y nos pide usuario y contraseña. 

Connected to ftpiesburguillos.burguillosdelcerro.
220 ProFTPD 1.3.4a Server (ftpiesburguillos) [::ffff:172.17.164.30]
Name (ftpiesburguillos:jmmedinac03): ftp
331 Password required for ftp
Password:

Y como nos dice que hemos accedido correctamente.

230 User ftp logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Ya que no es un servicio que se utilice habitualmente en los servidores de aula, y yo estoy utilizando la imagen de uno de ellos, hay que tener la precaución de meter el paquete proftpd-basic dentro del fichero /etc/pkgsync/mayhave  para que no lo desinstale pkgsync al ejecutarse.

Instalar servidor http


Actualización Marzo-2016

Mismo problema, mismo trabajo:
estoy preparando servidor en nuevo linex a base de Xubuntu.
Mismo procedimiento, lo he seguido desde aquí:

https://www.digitalocean.com/community/tutorials/como-instalar-linux-apache-mysql-php-lamp-en-ubuntu-14-04-es

Las unicas matizaciónes vienen por nombre de paquetes: en vez de mysql-server es mysql-server-5.5 y cosas similares.


Una de las principales funciones del tercer servidor es la de servidorweb. Allí están disponibles ficheros de uso frecuente, fotos, recursos docentes, etc. Es por ello que hay que instalar un servidor http. Puedes ver todo el proceso en :


En resumen, instalar apache2, mysql y php5.
Los archivos de configuración para los distintos host virtuales estaban en el directorio /etc/apache2/sites-available.
Como ha cambiado un poco apache, es más me ha tenido loco un par de días por que no arrancaban los host virtuales https://www.blogger.com/blogger.g?blogID=2361837138647093212#editor/target=post;postID=2411264700765579898;onPublishedMenu=allposts;onClosedMenu=allposts;postNum=0;src=postname no he restaurado los archivos anteriores, sino que, tal y como pone en el post, he copiado el archivo /etc/apache2/sites-available/default con el nombre del resto de los hosts virtuales y he cambiado datos.
Después para que funcione hay que enlazarlo a /etc/apache2/sites-enabled, que se hace con el comando:

root@servidorweb:/etc/apache2/sites-available# a2ensite Archivo_host_virtual

reiniciamos servicio apache (service apache2 reload) y comprobamos que funcione.

Instalar repositorio adicional con reprepro

Si bien tenemos repositorios locales en el servidor ldap, tengo un repositorio adicional en el servidor web.
Este repositorio me sirve para colocar paquetes que no están incluidos en los repositorios ( firefox, java,etc.. ). Así cuando tengo que instalar algún paquete via puppet  en vez de tener que descargar paquete, simplemente lo instalo con apt-get install.
El repositorio está creado con reprepro. Puedes ver como se instala y crea en los siguientes posts de Esteban Navas:


Básicamente es instalar reprepro, crear el directorio conf, crear la clave y ponerlo en directorio principal y crear fichero con distribuciones y crear enlaces simbólicos. En esta página viene muy bien estructurado y detallado.
Por otra parte ya que estoy pasandome a wheezy añado también el repositorio de wheezy, siguiendo también las indicaciones de Esteban:


Y luego ya nada más que queda añadir los paquetes que queramos. 
Tengo un archivo en el derectorio de reprepro con nombre UsoReprepro.txt con el siguiente contenido:

root@servidorweb:/var/www/repository/iesburguillos# cat UsoReprepro.txt 
cogido de blog de esteban navas     http://enavas.blogspot.com.es/2012/10/crear-nuestro-propio-repositorio-de.html
# contraseña:mi propia contraseña
reprepro --ask-passphrase includedebAgregar paquetes binarios a nuestro repositorio
Para agregar paquetes binarios (.deb), nos situamos en la carpeta raíz del repositorio (siguiendo el ejemplo: /var/www/iesvalledeljerte3) y ejecutamos el siguiente comando:

$ reprepro --ask-passphrase includedeb [DISTRIBUCION] [PAQUETE]

Ejemplo:
$ reprepro --ask-passphrase includedeb squeeze /home/enam0000/Java-package/oracle-j2re1.7_1.7.0+update7_amd64.deb

$ reprepro --ask-passphrase includedeb squeeze /home/enam0000/Java-package/oracle-j2re1.7_1.7.0+update7_i386.deb

Nos preguntará por la frase de paso. La introducimos y al terminar incluirá nuestro paquete binario en el repositorio.

Eliminar paquetes binarios del repositorio
Eliminar un paquete de una rama de nuestro repositorio es sencillo:

$ reprepro --ask-passphrase remove [DISTRIBUCION] [PAQUETE] 

Ejemplo:
$ reprepro --ask-passphrase remove squeeze oracle-j2re1.7

indica como añadir y eliminar paquetes.

Instalar dsh

Esta, dsh, es una utilidad que nos permite ejecutar un determinado comando en varias máquinas de una sola vez, por lo que es muy interesante si hay que realizar una operación en un grupo de máquinas, ya que entre otras cosas podemos tener diferentes grupos definidos.
Pero no voy a explicar más, ya que aquí, como siempre, está mejor explicado, en la página del gran Esteban Navas:

Como yo también lo tenía en el anterior servidor, copio la carpeta antigua /etc/dsh/group y los archivos machines.list que es un fichero con el nombre de todas las máquinas por si queremos realizar un comandoa todas y un pequeño fichero de texto al que llamo LeemeUtilizacionDSH.txt con el siguiente contenido para recordar su uso:
DSH es una utilidad para ejecutar comandos por ssh a varias máquinas simultaneamente.
El archivo de configuración está en /etc/dsh/dsh.conf
En la carpeta /etc/dsh/group/ se meten los diferentes grupos que queramos hacer. Tenemos:
all: (lista con nombre de equipos)debemos meter todos los equipos para cuando ejecutemos la orden a todos los equipos
LTSP: lista con los LTSP
workstation: idem de workstation

Uso:
dsh -v -m nombre_maquina -- comando     Ejecuta un comando en una máquina
dsh -v -a --comando Ejecuta un comando en las máquinas que están en el /etc/dsh/group/all
dsh -v -g nombre_grupo --comando Ejecuta un comando en las máquinas que están en el grupo /etc/group/nombre_grupo



lunes, 27 de octubre de 2014

Quitar botón de Accesibilidad en pantalla de inicio de Sesión.

En  gnome3 se utilizan las extensiones, o sea que muchas de las opciones que queramos utilizar o no utilizar lo podemos utilizar desde estás.
Navegando y buscando cómo quitar el botón de accesibilidad me encontré en esta página la solución

Para deshabilitar el botón hay que comentar la linea

 'a11y': imports.ui.status.accessibility.ATIndicator,
 en el archivo:
/usr/share/gnome-shell/js/ui/panel.js
 
 const GDM_STATUS_AREA_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'batter$
const GDM_STATUS_AREA_SHELL_IMPLEMENTATION = {
// 'a11y': imports.ui.status.accessibility.ATIndicator,
'volume': imports.ui.status.volume.Indicator,
'battery': imports.ui.status.power.Indicator,
'keyboard': imports.ui.status.keyboard.XKBIndicator,
'powerMenu': imports.gdm.powerMenu.PowerMenuButton
};

lunes, 29 de septiembre de 2014

Establecer cuotas de disco en servidor nfs

Como el gran Esteban Navas  ha publicado en su blog un artículo de cómo crear las quotas para los usuarios, y como yo no lo tenía activado desde el cambio de servidor me lo anoto y lo pongo para tenerlo a mano.
El post está en :

http://enavas.blogspot.com.es/2014/09/configurar-el-servidor-nfs-del-centro.html

además los paquetes setgroupquota en:

http://enavas.blogspot.com.es/2013/03/paquete-setgroupquota.html

y los siguientes tutoriales:

http://persoal.citius.usc.es/tf.pena/ASR/Tema_3html/node19.html

http://www.neoworld.es/tutoriales/ubuntu-linux/cuotas-de-disco-en-linux/


Al instalar dicho paquete me ha dado problema con dependencias que no podía instalar libnet-ldap-perl. Le he dicho que instalara y seguía dando error, pero al hacer apt-get -f install, ya lo termina de instalar y configurar sin problema.

Pongo aquí las instrucciones dejadas por mi compañero Julio de IES Santa Lucía del Trampal que me parecen muy acertadas:



0) Se instalan los paquetes: quota, quotatool en el servidor principal

1) Se edita la linea del fstab con:
/dev/mapper/servidor-home /home   ext3  defaults,usrquota,user_xattr
0       2
(solo hemos añadido cuotas por usuario, no es necesario las quotas por
grupo)

2) Se remonta el sistema de ficheros. mount -o remount /home.
(Podemos comprobar al hacer "cat /etc/mtab" que el sistema de ficheros
está montado con las opciones de quotas)

3) Se generan los ficheros de control de las cuotas: "quotacheck
-cum /home"
(se queda el sistema un tiempo generando los ficheros de control)
(si los hubiésemos intentados generarlos a mano, tal y como se indica en
otras instrucciones con touch, tendremos que borrar estos ficheros)

4) Se activan las cuotas: "quotaon /home"

5) Se comprueba que el home tiene asignadas las quotas: "repquota
-vu /home"
(aparece un listado de usurarios, con parámetros de momento a cero)

6) Generar cuota para un usuario:
   Nos metemos en el directorio donde esté el usuario en mi
caso: /home/profesor/
   setquota julioldap 2000000 2000000 0 0 /home
   (con esto asigno a julioldap 2G de soft y 2Gb de hard)

7) Copiar esa configuración a el resto de usuarios:
Nos vamos al directorio donde tengamos todos los usuarios ldap el
sistema, por ejemplo /home/profesores.
   ----Desde ese directorio ejecutamos: "edquota -p usuario_prototipo *"
Este comando copia la configuración de quota del usuario"
usuario_prototipo" a todos los usuarios
(* indica los directorios de usuario) que tengan su home directory
en /home/profesores)
Si algún directorio da error, no se aplicaran las cuotas en los
siguientes usuarios/directorios.
Para saltarnos algún directorio podemos hacer:
"edquota -p julioldap `ls | grep -v dpto`"
Para verificar que este paso se ha hecho bien, podemos ejecutar:
"repquota -vu /home" Y ver que están los valores deseados.


Hay que tener algunos conceptos claros:

 Límites de cuotas:
  • Límite débil: si la cuenta del usuario o del grupo supera el límite débil, se impondrá un período de gracia en el que el usuario podrá reducir la ocupación
  • Límite duro: se deniega cualquier intento de escribir datos después de este límite
  • Período de gracia: tras superar el límite débil, si el usuario no resuelve el problema borrando archivos, la cuenta se bloquea
Cuotas de usuario y de grupos
  • Usuario: fija un máximo al espacio de todos los ficheros del usuario
  • Grupo: fija un máximo al espacio de todos los ficheros del grupo
    • puede incluir ficheros de varios usuarios
Activación y desactivación de Quotas:

Las quotas se activan con:

servidor:~# quotaon -guv /home


y se desactivan con:


servidor:~# quotaoff -guv /home


Se puede editar y consultar los parámetros desde edquota.

con setgroupquota podemos establecer valores para grupos de ldap, en este caso los más interesantes grupos teachers y students.

 No obstante voy a colocar la forma de hacerlo con comandos normales:

- quota nos muestra los usos y límites de disco.
Así si queremos saber la cuota de un usuario (-u para usuario y -s para unidades en M,G,etc..)

servidor:~# quota -us usuario
Disk quotas for user usuario (uid 10012):
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
/dev/mapper/servidor-home
                 27549M*   977M    977M   6days   27433       0       0 


Idem de un grupo:

 servidor:~# quota -g teachers
Disk quotas for group teachers (gid 3000):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/servidor-home
                 717904  10000000 10000000             119       0       0        


Los grupos que nos interesan a nosotros son teachers y students .
La opción -g nos muestra tiempo de gracia.
- edquota nos permite editar las cuotas de usuarios y grupos. Se nos abre un editor de texto en el que podemos meter tanto quotas y límites( importante en bytes).

servidor:~# edquota -g teachers




Nos abre un archivo con el siguiente contenido:



  GNU nano 2.2.6                        Fichero: /tmp//EdP.anlLHnz                                                        

Disk quotas for group teachers (gid 3000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/mapper/servidor-home     717904   10000000   10000000        119        0        0



 - repquota nos informa de las quotas de los diferentes usuarios y grupos:

servidor:~# repquota -g /home
*** Report for group quotas on device /dev/mapper/servidor-home
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   95024       0       0            118     0     0      
nogroup   --       4       0       0              1     0     0      
portatil  --      24       0       0              6     0     0      
teachers  --  717904 10000000 10000000            119     0     0      
students  --      16 1000000 1000000              1     0     0
   













viernes, 5 de septiembre de 2014

JXplorer como browser de Ldap

A veces resulta un poquito engorrosa la aplicación phpldapmyadmin como visor, editor de la base de datos LDAP que tenemos en el centro.
Hoy por casualidad he descubierto este visor y al probarlo, la primera impresión es su sencillez.
Como está en los repositorios, la instalación es sencilla:

apt-get install jxplorer.

Para conectar le damos al botón marcado "conect to dsa" y metemos los datos:

  • dir ip de servidor
  • Base DN:
  • Security: usuario y contraseña y SSL si se dispone
  • User DN: ruta completa a ldap del administrador
  • Contraseña:


Y dándole a ok accedemos y podemos modificar los datos:


Solo me he encontrado un problema, y es que la autentificación sólo resulta favorable si tengo establecida una conexión desde el navegador con phpldapmyadmin.... habrá que segir investigando.


jueves, 28 de agosto de 2014

Incrustar pdf en blogger

Como esto de subir fotos a blogger es un poco coñazo, y como me gusta documentar las cosas también en archivo de texto y es doble trabajo, necesitaba incrustar los documentos pdf generados  en blogger y encontré la solución en el siguiente enlace:

http://www.parablogger.info/2013/03/archivos-pdf-incrustado-en-tu-blog.html

que básicamente es cambiar la pestaña Redacatar por la de HTML y pegar el siguiente texto:

<iframe src="http://docs.google.com/gview?url=http://www.essalud.gob.pe/oporlaboral/ayacucho2013002cas.pdf&embedded=true" style="width:600px; height:500px;" frameborder="0"></iframe>

Lo que está en rojo es la dirección url del archivo que queremos que se muestre.

En mi caso quiero que se muestren documentos míos de Drive que los he puesto como públicos.
Me voy al archivo del cual quiero obtener la url, con botón derecho de ratón elijo opción "Compartir" y compartir otra vez y nos aparecerá un enlace tal que así:

https://drive.google.com/file/d/0B29ekJu7Qs4HeVBwNzNYV2FJRnc/edit?usp=sharing

elimino lo último: /edit?usp=sharing, por lo tanto el enlace en sí del documento es:

https://drive.google.com/file/d/0B29ekJu7Qs4HeVBwNzNYV2FJRnc

por lo tanto cambiando el url en la pestaña de edición html por el que figuraba anteriormente ya se debe de mostrar.
https://drive.google.com/open?id=0B29ekJu7Qs4HcThVMElQNERsVms&authuser=0


Desguace de netbook Acer Aspire One

Ya en la entrada anterior Cambiar la pantalla de portatil Acer Aspire One había desguazado la pantalla del Acer Aspire One.
Ahora voy a continuar con el desguace del resto del portátil, para ver como se desmontan el resto de los componentes.

En el siguiente enlace tienes acceso al archivo pdf.

https://drive.google.com/file/d/0B29ekJu7Qs4HcThVMElQNERsVms/edit?usp=sharing

Tareas de inicio de Curso

Un nuevo curso empieza y voy a intentar colocar aquí las diferentes tareas que es necesario realizar a inicio de curso.

Copias de Seguridad de los Servidores

A pesar de que para las copias de seguridad utilizo un script que basado en rsync se encarga de hacer las copias de seguridad de forma automática( una información un poco más detallada de como funciona lo tienes en:
https://sites.google.com/a/iesburguillos.homelinux.org/para-recordar/home/las-cosas-del-instituto/scripts/las-copias-de-seguridad)
, me gusta tener una copia de seguridad completa de servidores nfs y ldap por si el amigo Murphy le da por hacer de las suyas.
Así de esta manera tengo una salida y por ejemplo restaurar la copia de seguridad en un equipo nuevo y tener el servidor trabajando en un corto espacio de tiempo (no obstante considero que existen sin duda formas mejores utilizadas por los compañeros Esteban Navas, Antonio Abasolo, etc... pero como yo me quedo en el suelo y no estoy a la altura.....).
En mi caso tengo un disco duro sata exclusivo para estas copias de seguridad y otras que es donde suelo guardarlas y que normalmente está guardado, es decir que antes de hacer los backups, con el servidor auxiliar que utilizo (servidorweb) apagado, conecto el disco sata, lo monto en /var/imagenes/backup20142015, creo los directorios donde voy a almacenar los backups: ldap, servidor y home, y lanzo las órdenes desde linea de comandos desde el propio servidorweb que lanzará rsync y hará la copia de seguridad del equipo remoto.

Copia de Seguridad LDAP

Aunque hay cierta información que no es necesaria guardar, no me complico la vida y hago copia de seguridad completa del servidor LDAP a excepción de dos directorios (los excluyo con la opción --exclude):
  • /var/haarp        es un cache web que utilizamos para mejorar la velocidad de salida de internet y ocupa mucho espacio por lo que no es interesante guardarlo.
  • /var/squid-reports    aquí se guardan los sitios a los que han accedido todos los usuarios y desde todas las máquinas, son los datos del proxy, y como tanbien ocupa mucho espacio me parece interesante descartarlo.
La orden que lanzo para realizar la copia es la siguiente:

root@servidorweb:/var/imagenes/backup20142015# rsync --force --ignore-errors --delete --delete-excluded   -- exclude /var/haarp --exclude /var/squid-reports --backup -av  root@ldap:/ /var/imagenes/backup20142015/ldap

Copia de Seguridad de Servidor NFS

El servidor nfs, ya que soy muy maniático, realizo por separado el /home (que es donde se guardan datos y documentos de los usuarios del centro, tanto profesores como alumnos), y el resto del sistema de archivos, entonces tengo las siguientes órdenes:

root@servidorweb:/var/imagenes/backup20142015# rsync --force --ignore-errors --delete --delete-excluded  --exclude "home/"  --backup -av  root@servidor:/ /var/imagenes/backup20142015/servidor

y para el /home:

root@servidorweb:/var/imagenes/backup20142015# rsync --force --ignore-errors --delete --delete-excluded   --backup -av  root@servidor:/home/ /var/imagenes/backup20142015/home

Copia de Seguridad de Servidorweb


por último también puedo hacer una copia del servidorweb.
En este caso no copio el directorio donde el disco donde guardo las copias de seguridad, y tampoco el directorio dónde guardo las copias de seguridad incrementales que se van guardando automáticamente durante el curso"/var/backups",ni el /var/imagenes donde guardo las imágenes de disco duro con clonezilla, tampoco /mnt donde tengo montado un pendrive y tampoco "/home*" que es donde están montado el home de los usuarios por nfs y del cual he hecho ya copia.

root@servidorweb:/mnt/disk1/backup20142015# rsync --force --ignore-errors --delete --delete-excluded  --exclude "/mnt" --exclude "/var/backups" --exclude "/var/imagenes" --exclude "/home*" --backup -av  /  /var/imagenes/backup20142015/servidorweb

Otras Copias de Seguridad

En /backup del servidorweb también tengo guardadas otras copias de seguridad como son:

controlies: Es una copia de la aplicación controlies donde guarda la base de datos de los equipos ya introducidos. Útil cuando se actualiza paquetes para que no se borren los datos.

routersYSwitch: copias de seguridad de configuraciones de routerswifi, routersAdsl, switchs, etc...

backupLTSP: aquí guardo los ficheros de configuración importantes de cada servidor de terminales, y que son únicos en cada uno, como el de aulalinex (aulalinex-profesor.conf), controlaula (setup.ini), 70-persistent-net.rules (con las diferentes mac y nombre de cada una del equipo), y configuración de hostapd (hostapd.accept y hostapd.conf).
De esta forma si hay que clonarlo de nuevo o actualizarlo me ahorro algún trabajo.

Modificación de Usuarios del Centro

Quizá la labor más engorrosa, a mi parecer, es la modificación de los nuevos usuarios para el nuevo curso, no sólo por que hay que darlos de alta en el centro (servidor LDAP), sino por que aquí se usan otras herramientas en los que es necesarios darlos de alta:

  • Servidor LDAP del centro y creación de sus carpetas de usuario en servidor NFS del centro.
  • Google Apps Servicio de google en el que estamos como entidad educacional, en el cual nos permite crear usuarios y cuentas de google en nuestro dominio y desde allí tener acceso cada uno a las diferentes aplicaciones de google.
  • Portal Moodle del centro en moodle.educarex.es

Eliminación de Usuarios Antiguos

Tenemos los usuarios antiguos en los siguientes sitios:
  • Base de Datos LDAP. Se eleiminarán cuando subamos los datos de los nuevos con la herramienta Controlies, ya que permite marcar casilla de eliminar los anteriores.
  • Servidor NFS. Tiene los home de los usuarios y como ocupa espacio es aconsejable quitarlos. Pasándole el script crearCarpetas de Antonio Abasolo se encarga además de crear las carpetas de los usuarios nuevos, de eliminar los que no están dados de alta en la BBDD LDAP.
  • También en el servidor NFS en alguna ocasión es necesario corregir el propietario de los archivos de los usuarios, bien por que ha cambiado el número de usuario o por que no lo muestra correctamente. Para ello es muy util un script que automatiza y lo tengo en /usr/local/bin/PonPropietario.sh

Descargando los Usuarios

Para empezar el proceso, y como lo normal es que los alumnos no estén totalmente matriculados hasta casi que empieza el curso, yo empiezo por los profesores.
Los datos de los profesores se obtienen desde el usuario del administrador informático en rayuela.educarex.es y lo tenemos en menú Utilidades/Intercambios de Información  ahí podemos selecionar el tipo de intercambio de información entre:
  • Exportación a LDAP de datos del Profesorado
  • Exportación a LDAP de datos del alumnado
  • Exportación a LDAP de datos de los grupos del centro
Una vez seleccionado nos aparecen las exportaciones que hemos realizado con anterioridad, para hacer una nueva con los datos actuales, le damos al icono de hoja en blanco de arriba a la derecha, que es "Añadir", y nos aparecerán los datos actuales, entre los cuales podemos seleccionar todos o algunos (profesores, flitrar por grupo, etc....) podemos poner una breve descripción en observaciones y le damos al check para que se realice, nos mostrará la pantalla anterior de todos los intercambios de información anteriores (muchas veces hay que salir y volver a entrar para poder descargar documento [con boton derecho/descargar documento] por que si no aparece indefinidamente procesando).
El documento descargado es un archivo XML con los datos de cada usuario o grupo.
¡¡¡¡MUY IMPORTANTE¡¡¡ los datos de los profesores no aparecen hasta que rayuela no cambia por defecto el curso escolar, en el caso de este año a dos días laborables de empezar el curso. Hasta entonces aparecen los profesores del curso pasado. No ocurre así con grupos y alumnos que nos deja elegir el curso a exportar.
Así yo que voy a empezar con los datos del profesorado, he descargado dos archivos:
  • ExportacionDatosProfesorado.xml
  • ExportaciónGruposCentro.xml

Dar de alta usuarios en LDAP

Lo primero y más sencillo es dar de alta los usuarios nuevos en la base de datos LDAP del centro.
Se hace de manera más sencilla con la maravillosa  utilidad Controlies que están desarrollando los compañeros Manu Mora y Alfonso Pastor.
En el menú Gestión/Importación de Rayuela se nos muestra la siguiente pantalla:
En Elegir Archivos seleccionamos los archivos de los queramos dar alta  y adelante.
Podemos también marcar el check de borrar el resto de usuarios, interesante para Alumnos, y yo creo que no aconsejable para profesores, ya que además nos borraría los usuarios del resto de personal de centro de los que no se descargan datos: Administrativos, conserjes, informático, etc....
Una vez realizado esto podemos comprobar que ya están dados de alta, no obstante es necesario crear sus carpetas de home para los usuarios nuevos.
Esto lo hace un script del servidor NFS que se llama CrearCarpetas. En algunos centros está puesto en el crontab del nfs para que compruebe cada 5 minutos, si no es así lo ejecutamos a mano y comprobamos que se hayan creado.
Como es posible que se cambien los id y gid de los usuarios y entonces no podría entrar, ejecuto un script que está en el servidor /usr/local/bin/modificar-idusuario-grupo.sh   y el se encarga de ponerles los correctos.

IMPORTANTE: He observado como en la base de datos ldap en la rama de grupos se encuentran los grupos de usuarios de otros años, es decir parece como si al crear los alumnos de nuevo no borrara los anteriores. Puede ser debido a que yo marco sólo borrar los pasados con alumnos, no con profesores ni con grupos, quizá para el curso que viene habría que probar a subir a la vez archivos de grupos, alumnos y profesores y marcar borrar anteriores, a ver si  ya queda todo bien. El único inconveniente el crear de nuevo los usuarios profesores: yo, educadora, conserjes, administrativo, etc ... aunque también puedo exportarlo antes en un fichero .ldif e importarlo posteriormente.
NOTA 2015 : El alta de los grupos no sale correcta hasta que se han dado de alta alumnos y profesores.
Por otra parte al importar los profesores controlies no te elimina los profesores que se han dado de alta a mano, o sea que un problema menos.
Si es importatante que igual que cambia el id y gid del servidor, pasa lo mismo con los home en los portátiles. Para ello tengo una tarea portatil-actualiza-usuario que se encarga de ponerle de nuevo los propietarios correctos.

Dar alta usuarios en Google Apps y Moodle.

Tengo realizado un script que aunque es un poco "burdo", ya que está hecho a mi manera, de manera sencilla me genera un fichero .csv con los datos de los usuarios para crearlos en nuestro dominio en Google Apps y además me genera otro fichero con los datos para el alta en la plataforma Moodle de Moodle.ducarex.es.
El script está en la ruta:  /usr/local/bin/altaGeneraCSVyMoodle.sh, y tiene las opciones de crear usuarios de profesores o alumnos:

sh scriptAlta  -[a(para alumnos)|p(para profesores)] nombre_archivo.xml nombre_fichero_salida ademas se creara el archivo nombre_fichero_salida.google.csv

Le pasamos el archivo xml bajado de rayuela de profesores o alumnos y nos genera tres archivos:
  • .csv Con  todos los datos grupos incluídos.
  • .moodle.csv para dar de alta en moodle con las siguiente cabecera y datos: username,password,first name,lastname,email
  • .google.csv para dar de alta en Google Apps con siguiente cabecera y datos: email address,first name,last name,password


Listado Usuarios-Contraseñas Inicio de Curso

Mediante el script listado_inicio_curso.sh creado por Alfonso Pastor, Nando Sosa y José María Sanchez podemos obtener un listado de los alumnos en pdf o html separados por grupo y con usuarios y contraseñas, muy útil para dárselo a los tutores y que éstos le den a cada alumno su usario-contraseña.
Hay que tener el paquete xmlstarlet instalado y se usa listado_inicio_curso.sh alumnos.xml grupos.xml profesores.xml ficheroDeSalida.html.

Preparación de portátiles.


Con el cambio de curso, logicamente, se van alumnos, a los que hay que recoger el portátil, y vienen nuevos, a los que hay que prepararles otro.
Hay que tener especial atención a los alumnos que se van en otro curso que no sea cuarto (esos están controlados), o bien los que pasan a fp básica desde también cualquier otro curso, ya que debido a la escasez, sólo los alumnos de ESO pueden tener portátiles, y a esos habría que retirárselos.
Modo de actuar con portátiles a la gente que se va:
  • Recogerle el portátil.
  • Dar de baja en aplicación controlies. Para que quede constancia yo lo cambio de asignado a sin asignar y lo pongo una observación:" lo tuvo usuario".
  • Limpiar con ese buen disolvente de tinta que tenemos en el centro y que lo deja "como las patenas del oro".
  • Si es necesario por cambio de sistema operativo, clonarlo de nuevo. Podemos ver cómo en el artículo de Esteban Navas.
  • Dejarlo en el armario preparado para cuando tengamos el listado definitivo de alumnos nuevos.
Así una vez que ya tenemos los listados definitivos de alumnos:
  • Coger los listados de los alumnos de 1º y ver cuáles son repetidores, ya que esos tienen portátil.
  • Ver si hay algún alumno nuevo en otros cursos aparte de 1º ( yo se lo pregunto a mi administrativa que está al corriente de todo). A esos niños habría que prepararle un portátil también.
  • Generar las etiquetas. Con la fantástica aplicación de Manu Mora de impresión de etiquetas:   https://github.com/manumora/laptop-labels. Es una aplicación que la he colocado en mi servidor ldap siguiendo las indicaciones dadas en el repositorio. Poniendo en el navegador: http://ldap/labels nos aparece la siguiente pantalla desde donde podemos imprimir etiquetas para pegar en Portátil, cargador y batería.
  • Las etiquetas se imprimen en pegatinas 70*37 y listas para pegar. Las protejo con precinto transparante para que con el roce no se borren.
  • Una vez etiquetado el portátil lo enciendo y nombro dicho portátil, como root ejecuto el script /root/S99-primerarranque que le pondrá el nombre. Este año he visto que existe la opción de cambiando dicho script y pasándole un archivo con macs y nombres de usuarios lo puede coger él automáticamente el nombre de usuario... a ver si para el curso que viene, ya que puede ahorrar mucho trabajo. Otra opción puede ser la tarea puppet renombrar-portátil, que si está activa permite cambiar de nombre al portátil. Yo de momento tampoco la tengo activa.
  • Después de reiniciar portátil, meto usuario y contraseña del niño, ya que así creará usuario y evitamos problemas a la hora de adjudicar. Para ello me ayudo de listado con usuarios y contraseñas generado antes. También ejecuto puppetd -t para comprobar que se actualiza correctamente.
  • Una vez renombrado el portátil meterlo en funda con cargador, y cable de red, pegatina en funda con nombre de niño y listo para cuando el director reparta los portátiles.
  • Asignar portátil en aplicación controlies para tener controlado quién tiene cada portátil.
Importante: Este año he clonado los portátiles a principio de verano y así los alumnos se lo han llevado para el verano. Al dar de alta usuarios nuevos me he encontrado el problema de que ha cambiado los números de usuario y grupo ldap, y por ello en cuanto se han conectado con los portátiles por red les ha dado fallo de autentificación. Solución para otra vez: o bien pasar una tarea que haga nss-updatedb ldap y le cambie su id y gid a /home/alumnos/usuario o bien pasar el script modificar-idusuario-grupo.sh del que he hablado antes.