Categorías

Entradas recientes

Comentarios recientes

Moodle y backups.

By claudio | Noviembre 6, 2009

Hace años que moodle se ha implementado y masificado en muchos colegios y universidades, en lo personal lo utilizo para los cursos que dicto en http://www.hormazabal.cl/e-cursos/. Para que esta herramienta Open Source funcione de buena manera, existen muchos tips dispersos en Internet, uno de los más básicos es correr el cron.php y programarlo con crontab.
Ahora, en un escenario extremo en el que el servidor “murió”, el disco falló y no contamos con RAID1, por accidente se borraron los archivos o base de datos, etc, lo más recomendale es tener backup de la carpeta moodledata, base de datos y los archivos de apache propios de moodle. Para lograr esto realicé unos scripts básicos que consisten en hacer backup de la base de datos MySql todos los días, realizar backups incrementales de moodledata y de los archivos de apache con rsync y mysqldump en un servidor remoto obviamente programado con el crontab. Considerar que el servidor moodle no debe utilizar password en la autenticación del usuario de sistema.
Lo primero, para realizar backup de la base de datos MySql se ejecuta el siguiente script llamado moodle_basedatos.sh:
#!/bin/bash
mysqldump –user=usuario_moodle –password=pass_usuario DB_moodle | gzip -9 >> bd_moodle_`date +%Y-%m-%d_%Hh%Mm`.sql.gz
scp -p bd_moodle_`date +%Y-%m-%d_%Hh%Mm`.sql.gz usuario_remoto@host_remoto:/Directorio

En Donde:
usuario_moodle: es el usuario de la base de datos asociada a moodle.
pass_usuario: password de usuario_moodle.
DB_moodle: Base de datos moodle.
usuario_remoto: usuario de sistema del servidor remoto donde caerán los backups
Directorio: Directorio de host remoto de backup.

La línea de mysqldump realiza una backup de la base de datos y la comprime con gzip y se le da el nombre de bd_moodle_ más la fecha.
La línea siguiente envía el backup mencionado al host_remoto con el usuario de sistema definido.

Ahora se realizará el backup de moodledata (donde se guardan los apuntes, fotos, tareas que se suben a moodle), de manera incremental de Lunes a Sábado y el Domingo se realizará respaldo completo. En el mismo script se respaldará la carpeta de archivos propios de moodle que “miran” a Internet por Apache. Se asume que en equipo donde llegan los backups, estos van a dar en /home/moodle y que los archivos moodledata están en /var/www/ y los archivos de moodle en /var/www/html/moodle. Se dejarán logs en la carpeta logs donde están los scripts del servdidor moodle.

Script para backup incremental:
#!/bin/bash
rsync -avvb –delete –backup-dir=/home/moodle/incremental_rsync/backup_$(date +%y%m%d) /var/www/moodledata usuario_de_sistema_remoto@host_backup:/home/moodle >> ./logs/mdata_$(date +%y%m%d).log
rsync -avvb –delete –backup-dir=/home/moodle/incremental_rsync/backup_$(date +%y%m%d) /var/www/html/moodle usuario_de_sistema_remoto@host_backup:/home/moodle/www >> ./logs/www_$(date +%y%m%d).log

Este Scritp es para respaldos incrementales que mi caso serán de Lunes a Sábado y se llama moodle_data_www_incremental.sh. Revisar los logs para ver resultados y considerar que al final hay un resumen.

Script para backup full:
#!/bin/bash
rsync -agE /var/www/moodledata usuario_de_sistema_remoto@host_backup:/home/moodle
rsync -agE /var/www/html/moodle usuario_de_sistema_remoto@host_backup:/home/moodle/www

Este Script es para respaldos full que se programarán los Domingos. Se dejaron los scripts en /root/respaldos.
Ahora la programación se realizará por crontab, para ello editarlo con crontab -l y agregar:

00 04 * * * root cd /root/respaldos ; sh moodle_basedatos.sh
30 04 * * 0 root cd /root/respaldos ; sh moodle_data_www_full.sh
30 04 * * 1-6 root cd /root/respaldos ; sh moodle_data_www_incremental.sh

Con esto los respaldos de la base de datos de moodle se ejecutará todos los días a las 4 AM. Luego el respaldo full los Domingos a las 4:30AM y los incrementales(moodledata y los archivos de apache) de Lunes a Sábado a las 4AM.

Observación: Si al restaurar alguna base de datos, esta es demasiado grande como para procesarla por consola o con phpmyadmin, existe una alternativa en http://www.ozerov.de/bigdump.php la cual divide al dump y lo restaura en partes. No olvidar crear el nombre de la base de datos, el usuario/password y los privilegios en caso de ser necesario.

Dato: Exámen con Scorm y ExeLearning.

Atte., Claudio Hormazábal Ocampo claudio@hormazabal.cl

Topics: General | No Comments »

Mi Experiencia como Ingeniero de Sistemas

By claudio | Febrero 1, 2009

Todo comenzó cuando mi hermano me regaló mi primer computador, por el año 89, un TK90X de microdigital (familia Sinclair), basado en un procesador Z80, el cual más tarde programé en la Universidad. Aprendí Basic, construí una batería electrónica con papel de chocolate, cartulina y palitos de maquetas, programé unos sonidos con la instrucción sound…… conecté las “cajas” al puerto del joystick y listo… este es el comienzo.
Pasaron los años, estudié Electrónica y ahora trabajo como Ingeniero de Sistemas. Un buen día me dije:”He realizado muchas cosas en Linux, pero no he documentado”. Y no ha faltado la ocasión en que necesito hacer lo mismo que hice hace algún tiempo y tengo que empezar de nuevo “from the scratch”. Para evitar eso y compartir mis conocimientos es que he decidido hacer mi blog técnico, de todo los proyectos interesantes que he realizado por ejemplo: Clonar muchos computadores con igual HW por red con G4U, sistema de respaldo de datos de PC de usuarios con servidor PDC Samba, Sistema de trabajo colaborativo (Egroupware) sincronozado con Outlook(Contactos, Libreta de Direcciones, Tareas y Notas) con LDAP, Virtualización P2V-V2P-V2V, Sistemas de monitoreo de servidores con Hyperic, etc. También he desarrollado proyectos independientes como implementación de Sistema de Control Automático de humedad y temperatura con Microcontroladores PIC e integradas a un sistema de almacenamiento de datos en base de datos MySql con PHP para ser visible por Web. He implementado plataformas E-Learning en varias Universidades y distintos sistemas de gestion y monitoreo.

Y a todo esto quién soy?
Nombre: Claudio Hormazábal Ocampo
Pofesión: Ingeniero de Ejecución en Electrónica
Estudios Superiores: Universidad del BIOBIO, Concepción, Chile (Buenos Recuerdos)
Cursos: Administración de Servidores Linux, Seguridad en Linux, Resolución de Problemas en Linux, Administración de Base Datos Oracle, Introducción a SQL Oracle, CNNA (Redes Cisco) módulos 1, 2 ,3 y 4. Estos cursos los realicé en Linux Center, InMotion y IPCIISA respectivamente.

Soy Administrador de Sistemas Corporativos en la Universidad Central en Santiago, desde el 2007 a la fecha y fuí administrador de un data center y laboratorios de computación desde 2002 a Julio 2008 en la Facultad de Ingeniería de la misma Universidad. Además desde el 2005 hago clases en la Universidad Iberoamericana de Ciencias y Tecnología de “Seguridad Informática”, “Lenguajes de Programación”, “Algoritmos y Lenguajes” y “Tecnología de Computadores”. Desde Marzo 2009 hago clases de “Tecnologías de Información y Comunicaciones I” en la Universidad de las Américas.

Y en Octubre 2008, participé como expositor en el Noveno Encuentro Nacional de Linux, efectuado en la Universidad de Concepción, con tema “Monitoreo de Servidores con Hyperic”:

http://2008.encuentrolinux.cl/index.php?option=com_content&task=view&id=34

Atte., Claudio Hormazábal

Topics: General | No Comments »

Charla en Encuentro Nacional Linux 2008

By claudio | Noviembre 14, 2008

Mi presentación en Encuentro Nacional Linux 2008 en la U. de Concepción con tema “Monitoreo de Servidores con Hyperic” (Parte 1)

Presentación en Encuentro Nacional Linux 2008 en la U. de Concepción con tema “Monitoreo de Servidores con Hyperic” (Parte 2)

Topics: General | No Comments »

Wmware en Centos 5 + problema con los C header files

By claudio | Noviembre 13, 2008

Antes que se me olvide este procedimiento, lo documento, ya que por lo menos 3 veces tengo que hacer esto desde cero y la documentación no es buena…

Al instalar Vmserver en un centos 5 y luego correr el  /usr/bin/vmware-config.pl y al llegar al paso:

What is the location of the directory of C header files that match your running
kernel? [/usr/src/linux/include]

y no encuenta los C headers, hay que hacer lo siguiente, instalar kernel-devel y kernel-headers y por supuesto gcc y gcc-++, luego reiniciar.

Topics: General | No Comments »

2 Grandes temas intrepretado por una gran banda….

By claudio | Noviembre 13, 2008

Bueno, no todo es Srcitps, Linux, monitoreo de sistemas, para “descansar” de estos temas, y aprovechando que estoy de vacaciones, publico 2 cover de RadioHead, uno es de Joy Division (uno de mis grupos favoritos) con “Ceremony”, y el otro es un tema The Smiths “The Headmaster Ritual” de “Meat is murder” (gracias por el dato German). Grandes recuerdos de juventud ….

Bajaron el cover de Joy Division, dejo el tema Disorder, y compenso con un tema clásico (para mí) de Apex Twin, el tema es Film.


Apex Twin - Film


Joy Division - Disorder


Radiohead - Cover de los The Smiths - The Headmaster Ritual

Topics: General | No Comments »

Cuotas de Disco en Linux

By claudio | Septiembre 2, 2008

Siempre debo definir cuotas de disco en sistemas Linux y … para variar no tengo documentado, pero … llegó el momento….

Bueno, para implementar cuota de disco en algún File System, se debe tener en cuenta que se deben crear 4 archivos por cada uno de ello. Para este caso se hará sólo para /home que es lo más común. Estos archivos son: quota.user, quota.group, aquota.user, aquota.group que administrarán las cuotas y llevar los índices de los archivos de usuarios y grupos.

  1. Ingredientes: Algún sistema Linux.
  2. Creamos los archivos con touch /home/quota.user, quota.group, aquota.user, aquota.group
  3. En el archivo /etc/fstab se debe indicar que usaremos cuotas de disco para luego remontar nuestro File System, /home en nuestro caso.  Se tiene en /etc/fstab, para /home:
  4. LABEL=/home             /home          ext3    defaults        1 2
  5. y Debería quedar:
  6. LABEL=/home             /home          ext3    defaults,usrquota,grpquota        1 1
  7. Luego se debe remontar /home con #mount -o remount /home
  8. Se pueden ver las opciones de montaje con #mount
  9. Los archivos quota.user, quota.group, aquota.user y aquota.group se deben activar para la administración de cuotas con #quotacheck -ugavm, en donde:

Finalmente se activan las cuotas en el file system con #quotaon /home. Esto vale para cualquier file system. Ok, pero ahora como asignamos cuotas? La instrucción que edita cuotas de discos es “edquota“.

  1. Para asignar cuota para algún usuario: #edquota usuario
  2. Para asignar cuota para algún grupo: #edquota -g grupo

Al ejecutar edquota, se ejecutará el editor de textos vi con opciones específicas para el manejo de quotas. En la línea 1 existe el identificador del usuario o grupo que estemos administrando. En las líneas subsecuentes, encontramos 7 columnas:

  1. Filesystem: Sistema de archivos en el que se implementa la cuota
  2. blocks: La actual cantidad de espacio en disco utilizado por el usuario o grupo en ese sistema de archivos. Este dato no se podrá modificar manualmente, aún cuando lo intentemos los cambios no se guardarán.
  3. soft: La cuota suave para la cantidad de espacio en disco utilizado. Se utiliza 0 para desactivar esta cuota
  4. hard: La cuota dura para la cantidad de espacio en disco a utilizar. El valor 0 desactiva esta cuota
  5. inodes: La actual cantidad de ficheros y carpetas utilizados por el usuario. Este dato no se podrá modificar manualmente, aún cuando lo intentemos los cambios no se guardarán.
  6. soft: La cuota suave para la cantidad de ficheros y carpetas utilizados. Se utiliza 0 para desactivar esta cuota
  7. hard: La cuota dura para la cantidad de ficheros y carpetas utilizados. El valor 0 desactiva esta cuota

Si se desea crear una cuota de 100M y teniendo en cuenta que los bloques son de 1K, entonces se debe cambiar 0 por 100000 el parámetro de hard.

Aplicando cuotas en forma masiva: Se debe utilizar un usuario con la cuota que queremos masificar y replicar dicha cuota al resto, suponiendo que tenemos al usuario “jperez” como replicador y que desde el usuario con UID 520 en adelante tengan la misma cuota de “jperez”, entonces hacemos:

edquota -p jperez `awk -F: '$3 > 520 {print $1}' /etc/passwd`

Topics: Artículos | No Comments »

Integración GLPI + OCS

By claudio | Septiembre 1, 2008

Una Herramienta útil en una corporación es algún HelpDesk o mesa de ayuda que centralice todo tipo de solicitud técnica. Dentro de las que evalué la que mas se acomodó a mis requerimientos es GLPI el cual puede gestionar, con gran facilidad e intuición, soporte técnico, los cuales generan un ticket con lo cual el encargado de soporte designa al técnico más competente en el área. Luego de ello se pueden generar prioridades de atención y escalamiento en caso que la atención demore mucho. En fín hay que descubrir el gran potencial que tiene. Por otro lado existe una herramienta llamada OCS que nos sirve para llevar un inventario actualizado de todas las herramientas de HW como PC, impresoras, monitores, etc. Todo esto en línea gracias a un agente que se debe instalar en cada equipo. OCS nos mostrará en línea todo el HW de nuestra corporación, como se muestra en el sreen shoot:

Una excelente idea es integrar GLPI y OCS, ya que juntando el HELP DESK de GLPI más el inventario de OCS podemos hacer seguimiento a todo el HW que tengamos inventariado. Con ello conseguir estadísticas de falla, seguimiento del manejo (o mal manejo),  del equipamiento de usuario, etc.
(Nótese el copy paste del párrafo anterior en un link de Wikipedia sobre el tema:http://es.wikipedia.org/wiki/OCS_Inventory)

Estuve buscando en San Google información sobre la integración,  pero ningún link documentaba desde el paso 0 al paso n, por lo que decidí publicarlo.

  1. Ingredientes: Servidor con GLPI y OCS (OCS puede estar en otro servidor, da lo mismo).
  2. Bajar el plugin de OCS para GLPI desde: http://glpi-project.org/spip.php?article254
  3. Descomprimir el glpi-mass_ocs_import-1.2.tar.gz y dejarlo dentro la carpeta plugins de la instalación de GLPI.
  4. Ahora la activación del plugin se hace desde web. Para ello ingresar a GLPI por web e ir a Configuración y luego “Modo OCSNG”.
  5. Hacer click en el icono de grabar (Signo de suma): el campo Nombre es el nombre de nuestra platilla que estamos creando, Servidor OCSWeb es la URL donde se encuentra nuestro servidor OCS que en mi caso es el mismo por tanto lo configuré con localhost, y el resto de los datos lo sabe el sysadmin.
  6. Luego que se estabezca una correcta conexión a la base de datos de OCS, se debe seleccionar los campos que se necesitan importar a GLPI.
  7. Luego del click en acpetar para grabar la plantilla.
  8. Ahora ir a Configuración y luego “Modo OCSNG” y hacer click en icono adjunto y luego en OCSNG.
  9. Finalmente, la primera vez que se importe el inventario se debe elegir “Importación de Ordenadores Nuevos”.

Esto es el procedimiento mínimo, una vez que se utilizan ambas herramientas integradas nos vamos dando cuenta de algunos de talles, como que la importación no es automática, uno debe hacerla de forma manual y sólo importando el HW nuevo.

Con este creen shoot termino esta documentación espero comenatrios.

GLPI+OCS


Atte.,
Claudio Hormazábal

Topics: Artículos | No Comments »

Chroot con VsFtp

By claudio | Agosto 22, 2008

Muy seguido debo implementar Vsftp (very secure FTP), con chroot. Que es el Chroot? Es un sistema de jaulas que no permite navegar por los directorios del servidor FTP, sólo permite navegar por el directorio asignado. Con esto se evita ver archivos de configuración y/o respaldos, etc.

Ingredientes:

  1. Cualquier Sistema Linux con VsFTP instalado.

Directivas del Archivo de configuración de VsFTP, en mi caso Centos 5.2: /etc/vsftpd/vsftpd.conf:

  1. local_enable=YES //autenticación de usuarios locales.
  2. write_enable=YES // permite escribir en el servidor.
  3. chroot_local_user=YES //habilita chroot para los usuarios locales
    chroot_list_enable=YES (*)
    chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
  4. Por defecto no viene creado el archivo vsftpd.chroot_list
    touch /etc/vsftpd/vsftpd.chroot_list //crea el archivo indicado
  5. Reiniciar servicio vsftpd.

(*) habilita restricciones de acceso a los usuarios ingresados en
/etc/vsftpd/vsftpd.chroot_list

 

Topics: Artículos | No Comments »

Como Borrar Procesos Defunt (deleted) con script utlizando lsof+awk

By claudio | Julio 29, 2008

Por fin mi primer artículo. Bueno, debido que muchos sistemas de bases de datos hacen correr procesos en forma temporal, como un reports(oracle), estos pueden quedar existiendo pese que para el fin por el cual fueron creados ya no exista. Como consecuencia “secuestran” recursos del sistema como CPU, RAM y muchas veces disco, lo he visto en bases de datos oracle. Ahora, para ver estos procesos podemos correr la siguiente linea:

#lsof | grep deleted

Con esto nos aparecerán los procesos sin utilizar por la apliacción original(en mi caso oracle) pero que siguen existiendo a nivel de Sistema Operativo. Para automatizar el borrado de estos podemos crear un script como el que sigue:

#!/bin/sh
LOGFILE=mata-defun-log.`date +%y-%m-%d`    #creamos variable archivo log
lsof | grep deleted | awk ‘{print $2}’ > $LOGFILE  #almacenamos los PID en archivo
for i in `lsof | grep deleted | awk ‘{print $2}’`       #iteracion para procesos defunt
do
kill -9 $i                                                            # matamos procesos en el for
done

Con esto matamos de una vez todos estos procesos que molestan (deleted o defunt). Si queremos automatizar la operación acada cierto tiempo podemos utilzar cron:

#cron -e
00 */3 * * * root /home/user/mata_defunt.sh

Esto ejecutará cada 3 horas este script almacenado en /home/user/mata_defunt.sh

Se reciben comentarios. SLDS Claudio Hormazábal.

Topics: Artículos | No Comments »