martes, 13 de octubre de 2009

Exportar a CSV desde MySQL vía Bash

Desde hace unos meses trabajo casi a diario con uno de los mejores LMS libres : Moodle. En un de los servidores web tenemos instalado Drupal, un buen CMS con un montón de funcionalidades por descubrir(al menos para mí). Pues bien, necesito que todos los usuarios que tenga cuenta en el webserver de Drupal, tengan automáticamente también una cuenta en Moodle. Una de las características que más me gusta de Moodle es la versatilidad en cuanto a la autenticación de usuarios : LDAP, Radius,Email, POP3... Tiene una opción muy útil, que permite subir los usuario en formato CSV. Si logramos extraer los campos necesarios de la BBDD Drupal tendremos la mitad de la tarea finiquitada. De momento sólo he conseguido automatizar la exportación a CSV. Evidentemente el script está muy poco trabajado, pero funciona.

#!/bin/bash
rm -rf /tmp/csv-tmp.txt
mysql --user=drupal --password=mipass drupal<SELECT name,pass,mail,name,language INTO OUTFILE'/tmp/csv-tmp.txt' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM users WHERE uid != 0;
EOFMYSQL
echo "username,password,email,firstname,lastname" > /tmp/csv-final.txt
cat /tmp/csv-tmp.txt >> /tmp/csv-final.txt
cp /tmp/csv-final.txt /home/alberto/Escritorio/csv-final.txt
chown alberto /home/alberto/Escritorio/csv-final.txt

domingo, 11 de octubre de 2009

Modo resumen ON

Voy a resumir lo que me ronda por la cabeza o en lo que estoy "liado" últimamente.
  • Curso PHP-XML. Pasada ya la fase de CSS y HTML, la semana pasada hemos comenzado a ver XML. Estoy barajando las posibilidades de implementar XML en un listado desde MySQL para unos temas laborales.El curso es bastante sencillo, digamos que el nivel es bastante básico. Últimamente no veo demasiada oferta formativa, fuera de las clásicas cerfiticaciones que valen un dineral, con nivel medio o alto. En fin, una pena.
  • Backups. La semana pasada a estas horas me estaba recuperando del susto de haber perdido los datos de un webserver que administro. Las copias de seguridad las llevaba(llevo) al día, y gracias a eso, apenas se han perdido datos: los modificados entre un backup y el otro. Tar y mysqldump han salvado la máquina.No pude dejar de pensar en la importancia de la correcta realización y verificación de los backups. De momento, y hasta hoy, estoy satisfecho(ego++) en este aspecto.
  • Apache2. Estoy un poco enfadado con Apache. Es un goloso! Estuve leyendo y probando configuraciones para mod_cache, y es probable que la semana que viene lo instale en unos de los webservers que administro.
  • Install Party Ubuntu 9.10. Se confirma la fecha del 14 de Noviembre de 11:00 a 13:00 horas en el Salón de Plenos del Concello de Mugardos. Más información proximamente en la web de www.comunidadeozulo.org.

jueves, 24 de septiembre de 2009

La (mini) biblia de VIm


Ir a linea al iniciar: vim +36 foo.c
Ir a linea en insercion: :14
Buscar: /cadena , con n la siguiente
SHITF-N para atrás
Numeros de linea: :set number
Moverse hasta el fin de la línea - $
Moverse hasta el principio de la línea - 0
Moverse hasta la siguiente palabra - w
Moverse hasta la anterior palabra - b
Moverse hasta la siguiente palabra* - W
Moverse hasta la anterior palabra* - B
Moverse a la línea n*** - nG
Moverse hasta el final de la siguiente palabra - e
Moverse hasta el final de la siguiente palabra* - E
Encontrar el siguiente caracter c en la línea actual - fc
Encontrar el anterior caracter c en la línea actual - Fc
Llegar hasta justo antes del siguiente caracter c - t
Llegar hasta justo después del anterior caracter c - T
Encontrar el paréntesis contrario** - %
Moverse hasta la siguiente frase - (
Moverse hasta la anterior frase - )
Moverse hasta el anterior párrafo - {
Moverse hasta el siguiente párrafo - }
Moverse hasta la parte superior de la pantalla - H
Moverse hasta la parte media de la pantalla - M
Moverse hasta la parte inferior de la pantalla - L
Avanzar página - ^F
Retroceder página - ^B
Deshacer el último cambio - u
Deshacer todos los cambios de la línea actual - U
Redibujar la pantalla - ^L
Ver información del archivo actual - ^G
Reemplazar un caracter - r
Sobreescribir texto - R
Borrar el caracter actual y entrar en modo inserción - s
Cambiar la línea actual* - S
Cambiar entre mayúsculas y minúsculas - ~
Borrar texto (como el BackSpace) - X
(Sólo en vim) marcar bloque - v, V, ^V
uscar texto - /texto
epetir última búsqueda - n
Repetir última búsqueda en dirección contraria - N
Repetir última búsqueda hacia abajo - /
Repetir última búsqueda hacia arriba - ?
Repetir último cambio - .
Siguiente palabra (Modo inserción) ** - ^N
Anterior palabra (Modo inserción) ** - ^P

VI CiberEncontro Kernel 2009 - Mugardos - II

Pasados ya unos días desde que finalizó el Kernel 2009, toca reflexionar. Esta edición, a mi modo de ver, a mantenido el nivel de las anteriores, pero será cuestión de pensar para el próximo año, actividades y charlas que puedan mejorar aún más el evento.
La verdad es que la edición de 2009 ha sido la edición más Linuxera de todas. Pude contar a Pablo,Evaristo,Amador,Kutus,Iñaki Quenerapu,Alberto,Carola,Rodrigo,Keko y Aaron como usuarios de GNU/Linux durante la Party, bueno e Iván a última hora del sábado,claro. Hablo sólo de la planta baja, por que en la de arriba algún Linuxero había, y por supuesto algún MacOSX user. Digo por supuesto, por que siempre se suelen pasar algunos. Lejos de pretender ser una Linux Party, no deja de llenarme de satisfacción que la gente pueda usar su cerebro, huír del "sendero de los borregos" y decidir libremente qué software correr en su máquina. Enhorabuena a tod@s!

Todos los servicios de red: http,ftp,proxy-fw,dns,dhcp y demás, corrían en dos máquinas Debian GNU/Linux 5.0.3 stable. Los resultados fueron más que satisfactorios. La características de la máquina principal son: Procesador Intel Pentium 4 3,0 Ghz, 1 GB RAM, 1 HD SATA 200Gb, 1 Interfaz Gb Ethernet, 1 Interfaz 10/100 Mb Ethernet. Para 60 usuarios, corriendo Squid 2.7, Bind 9.5 , Cherokee 0.9 y dhcp3-server, por momentos se quedaba casi si RAM pero nunca se notó en el calidad del servicio. Ni un sólo reinicio en 3 días. En la segunda máquina, instalamos un Bind 9.5 esclavo del primero, con vsfptd y cherokee. Esta máquina alojaba la web interna del evento, así cómo el servicio ftp,para subir las fotos, vídeos y concursos. Con un procesador Intel Celeron 1 Ghz y 256Mb de RAM, los resultados fueron excelentes.

Si os interesan los ficheros de configuración, a mi modo de ver los más interesante son el squid.conf(post) y el script de iptables del proxy-firewall,ningún problema en facilitarlos.

Saludos.

sábado, 19 de septiembre de 2009

VI CiberEncontro Kernel 2009 - Mugardos

Son las 04:22, a mi derecha un Macbook "pinchando" Matrix Reloaded; ante mi, 38TB de información, y una de las interfaces de red de mi máquina pinchadas a un switch gigabit. Conclusión: esto va a ser, si no lo es ya, una auténtica jauría de GB y TB.

Entrando en materia, decir que he configurado un "clásico" proxy-firewall con Debian GNU/Linux 5.0.3 Stable, nada de historias. He instalado todo el software vía apt-build y de momento el resultado es más que aceptable. Esta es la primera edición en la que durante todo el evento los routers adsl está n balanceados, y se puede decir que la conexión hacia Internet ha mejorado con respecto a años anteriores.Iptables con DROP, Bind9 cacheando las consultas DNS y Squid ayudan bastante. Ni que decir tiene que el direccionamiento es vía DHCP, y claro, necesitabamos (Organización) "algo" que nos diese un "canuto extra" de salida a Internet. ¿Cómo? Facil! Asignando las direcciones ips fijas vía DHCP y con un script que se ejecuta cada 300 segundos, inserte estas direcciones en un ACL ede Squid que nos llame a un Delay Pool. Suena un poco enrevesado, pero con este script...

#!/bin/bash
FICHERO_SQUID=/etc/squid/canuto
rm -rf $FICHERO_SQUID
touch $FICHERO_SQUID
for ip in `cat /etc/dhcp3/dhcpd.conf|grep fixed-address|awk '{ print $2 }'|cut -d ";" -f1`
do
echo $ip >> $FICHERO_SQUID
done
/etc/init.d/squid reload 2>&1 > /dev/null






#################################################
#
#FICHERO CONFIGURACION SQUID KERNEL 2009
#
#################################################
#Parametros basicos
visible_hostname sauron.kernel2009
http_port 3128 transparent
httpd_suppress_version_string on
#
#
#Pametros de la cache
cache_mem 256 MB
cache_dir aufs /cache 2048 512 128
cache_mgr info@comunidadeozulo.org
coredump_dir /var/spool/squid/coredumpdir
acl manager proto cache_object
maximum_object_size 65535 KB
cache_access_log /var/log/squid/access.log
#
#
#Parametros varios
half_closed_clients off
ftp_user anonymous@nospam.com
error_directory /usr/share/squid/errors/Spanish
#
#
##############################################
# #
#TUNNIG DE TIEMPOS DE REFRESCO DE FICHEROS #
# #
##############################################
#Refresco de la cache MIN PORCENTAJE MAX(MIN)
#
#1440 = 1 dia
#2880 = 2 dias
#10080 = 7 dias
#20160 = 14 dias
#30240 = 21 dias
#
#Ficheros comunes en parties
refresh_pattern \.iso$ 2880 80% 10080
refresh_pattern \.deb$ 2880 80% 10080
refresh_pattern \.tar.gz$ 2880 80% 10080
refresh_pattern \.gz$ 2880 80% 10080
refresh_pattern \.bz2$ 2880 80% 10080
refresh_pattern \.exe$ 2880 80% 10080
#
#
#Ficheros de imagenes
refresh_pattern \.jpg$ 1440 50% 2880
refresh_pattern \.jpeg$ 1440 50% 2880
refresh_pattern \.gif$ 1440 50% 2880
refresh_pattern \.bmp$ 1440 50% 2880
refresh_pattern \.png$ 1440 50% 2880
refresh_pattern \.svg$ 1440 50% 2880
refresh_pattern \.tif$ 1440 50% 2880
refresh_pattern \.tiff$ 1440 50% 2880
#
#
#Documentos
refresh_pattern \.xls$ 1440 80% 2880
refresh_pattern \.doc$ 1440 80% 2880
refresh_pattern \.odt$ 1440 80% 2880
refresh_pattern \.rtf$ 1440 80% 2880
refresh_pattern \.jpeg$ 1440 80% 2880
refresh_pattern \.pdf$ 1440 80% 2880
#
#
#Ficheros comprimidos
refresh_pattern \.zip$ 2880 80% 10080
refresh_pattern \.rar$ 2880 80% 10080
refresh_pattern \.arj$ 2880 80% 10080
####################################
#
#LISTAS CONTROL ACCESO -ACLs
#
####################################
#Definicion de puertos seguros
acl SSL_ports port 443 563 8080
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 20
acl Safe_ports port 443
acl Safe_ports port 563
acl Safe_ports port 777
acl Safe_ports port 1024-65535
acl CONNECT method CONNECT
#############################
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl lan src 192.168.2.0/255.255.255.0
acl canuto src "/etc/squid/canuto"
acl denywords url_regex "/etc/squid/denywords"
acl denydomains dstdom_regex "/etc/squid/denydomains"
acl sincache dstdom_regex "/etc/squid/sincache"
####################################
#
#CONTROL ANCHO BANDA
#
####################################
delay_pools 2
#
#
#Para otros
delay_class 2 1
delay_parameters 2 407000/1048576
delay_access 2 allow canuto
#Para todos
delay_class 1 1
delay_parameters 1 256000/1048576
delay_access 1 allow lan !canuto
#
#
#
#
http_access deny denydomains
http_access deny denywords
http_access allow localhost
http_access allow manager localhost
http_access allow lan
http_access deny CONNECT !SSL_Ports
http_access deny CONNECT !Safe_Ports
http_access deny all