sábado, 24 de enero de 2015

Ajustes a una instalacion de ZIMBRA: comando sendmail

Zimbra es una solución muy redonda, a la hora de implementar soluciones de correo electrónico. En poco tiempo implementas una solución muy completa de correo, multidominio. Cuenta con una muy completa documentación y tutoriales para resolver necesidades o tareas no habituales.Una interface web de administración y un conjunto de herramientas de linea de comando facilitan la vida del administrador de sistemas y los operadores que realizan tareas de rutina.

La instalación usual de Zimbra crea un directorio bajo /opt (usualmente zimbra) e instala allí todos los paquetes y archivos de configuración.Es una buena solución, permite tener una instalación consistente a salvo de las actualizaciones del sistema operativo. La forma correcta de trabajar con zimbra por linea de comando es hacerlo con el usuario zimbra, o agregar al PATH los directorios donde corre zimbra.

Hace algunas semanas atras encontré que correos generados por el cron no se enviaban. La razón de esto es que el cron utiliza el comando sendmail. Conozco dos soluciones posibles a esto. La primera es en el crontab, definir la variable de ambiente PATH, con los directorios de zimbra donde esta el ejecutable de sendmail. La otra, parado en el directorio hacer un symlink al ejecutable de zimbra:

cd /usr/sbin ; mv sendmail sendmail.OLD;  \
ln -s ../../opt/zimbra/postfix-2.10.2.2z/sbin/sendmail

De optar por esta solución es importante que los enlaces simbolicos sean con caminos relativos.

lunes, 12 de enero de 2015

Rotar pantalla de Windows

Cada tanto tengo que atender una llamada con este problema, un usuario que tiene la pantalla de su PC con windows "al reves" o "girada". Y nunca recuerdo como arreglarlo, asi que esta entrada del BLOG es para tener un recordatorio a la mano.

  • Posicion Normal: Pulsar ctrl+alt+flecha arriba.
  • Girado 90º: ctrl+alt+flecha izquierda.
  • Girado 180º: ctrl+alt+flecha abajo.
  • Girado 270º: ctrl+alt+flecha derecha.
Esto funciona con Windows vista o superiores. En XP se podría arreglar en "Propiedades de Adaptador".

jueves, 8 de enero de 2015

¿PERL?

En el año que terminó recibí dos ofertas firmes de empleo, que involucraban este lenguaje. Es habitual que me llamen reclutadores, un par de veces al año, buscando gente con conocimiento de PERL. Me sorprendió las ofertas firmes de empleo, con salarios competitivos y en un caso un paquete de beneficios interesante.

El PERL entró a mi vida hace unos 15 años, con un cambio de empleo. Entre mis tareas como administrador de sistemas debía realizar scripts para automatización de tareas. Muchos de esos scripts se hacían con herramientas de filtros (SED, AWK). Varios scripts se sustituyeron o hicieron desde cero en PERL. Con algunas ventajas frente a programar con filtros, por la claridad de a la hora de entender la lógica del programa. El lenguaje resultaba adecuado para el trabajo.

Con otro cambio de empleo, empecé a trabajar como desarrollador WEB. Mi trabajo inicial era corregir bugs y agregar funcionalidades a KOHA, un sistema de gestión integrado para una biblioteca. Entré a trabajar con plantillas (HTML::Template) y acceso a bases de datos (DBI). Descubrí Date::Manip, una poderosa biblioteca (módulo) de manejo de fechas. También pude conocer de primera mano las limitaciones de trabajar en ambiente de CGI, con mod_perl se hace bastante más llevadero.

En general a mis colegas la mención de PERL les provoca rechazo. A nivel de desarrolladores la cosa no esta mejor, cuando podría ser una alternativa para scripts de backend; tareas simples de datawarehousing (scripts ETL)  o  procesamiento de logs.

No intento en esta entrada hacer una apología del PERL, simplemente ponerlo en el tapete. No tiene por que ser tu lenguaje de favorito, pero debería estar en la caja de herramientas del administrador de sistemas. Cuando menos tener una familiaridad, para instalar scripts o correjir bugs.

¿Quien usa PERL?

No es el lenguaje más popular, pero es utilizado en muchos sitios WEB con volúmenes de tráfico importantes. Una pequeña lista:
A nivel de backend se que hay CDNs que tienen scripts en PERL. Muchos CMS desarrollados in house fueron programados en PERL. Paquetes o aplicaciones desarrollados en PERL:
  • KOHA: Este ILS es utilizado por mas de 50 bibliotecas
  • OTRS: Un poderoso sistema de tickets y gestion de incidentes.
  • SpamAssassin: Filtro de SPAM, utilizado por muchos servidores de correo y firewalls con filtrado de correo.
  • GOSA: Sistema de gestión de usuarios y computadoras con Backend LDAP.
  • Bugzilla: Sistema de seguimiento de BUGS.

Aprender PERL

Si tengo que recomendar un libro, sigo recomendando el Learning PERL. Incluso una edicion vieja, como la tercera edición, es una buena ayuda para comenzar.

A nivel de recursos en linea, lo primero es ir a learn.perl.org. Este sitio tiene enlaces a tutoriales y muchos ejemplos de tareas concretas, como validar una direccion de correo o leer una planilla Excell.  En este mismo sitio hay una muy buena página con enlace a tutoriales. PERL.com está muy quieto, pero a veces aparece algo interesante. Otro sitio interesante es PERL Mongers, en Uruguay no hay grupo (¿Habra?).



lunes, 5 de enero de 2015

Limpiar el directorio winsxs de Windows 2008R2

Muy a mi pesar, sigo lidiando con directorios llenos de basura en equipos con distintas versiones de Windows.  Hace unos meses compartía como limpiar el directorio software distribution. Hoy le tocó al  directorio winsxs. La receta no es original mía, esta inspirada fundamentalmente en el blog happysadm.

¿Que es el directorio winsxs? Es un intento de respuesta a los problemas de utilizar DLLs en Windows 98, 2000 y posteriores. Uno de los problemas es justamente el crecimiento del directorio donde se guardan los manifiestos, esos archivos que especifican la versión correcta de una DLL para una aplicación determinada.

Para poder hacer la limpieza es necesario ejecutar una shell como administrador. Y alli ejecutamos:

DISM.exe /online /Cleanup-Image /spsuperseded


Al menos en mi caso me permitío recuperar unos 3 GB de disco.No es mucho pero trabajando con maquinas virtuales con discos de 20 GB promedio, hace una diferencia.

martes, 23 de diciembre de 2014

Alimentar y Cargar dispositivos en el auto

Hace un mes fui a Santa Rosa, a unos 50 km. de mi casa. A la hora de salir veo que mi celular estaba con poca carga. Decidí probar un accesorio que compré meses atrás en una tienda de electrónica. El que compré tiene dos tomas para encededor y dos tomas USB de 500 mA. Está pensando para la realidad de vehículos comerciales o taxímetros, que necesitan conectar varios dispositivos.Otro punto interesante es que admite entrada de 12 y de 24 V.

El cargador que uso en el auto
 En el trabajo hemos estado probando unos pequeños cargadores de 2000 mA, para cargar tablets en vehículos con resultados muy satisfactorios.
Cargador USB para auto

En el caso concreto del dispositivo que compré quedé muy conforme. En el viaje el celular recuperó la carga, con el viaje de vuelta lo cargue completamente. No le tenia fe, tuve en el pasado cargadores de auto que servían para poco.

Seguramente en el futuro compre un inversor de voltaje, que permite conectar dispositivos pequeños (hasta 150 Watts) alimentados por corriente alterna en la toma del auto. Esto es interesante para utilizar un notebook o cargar sus baterías.

jueves, 20 de noviembre de 2014

Calculadoras para Android

Este es uno de esos posts que quedan en el tintero, nunca lo termino. Acá va .....

Compré una tablet Samsung Galaxy tab 2, con upgrade de sistema operativo a Android 4.2. La compré con intenciones de tomar contacto de primera mano con tablets, veo difícil encontrar tiempo para hacer algo de desarrollo de software. La utilizo en una carcasa otterbox de la serie defender. Parece una tablet industrial,  pero ha sobrevivido con éxito varias caídas y viajes diarios en mi mochila.

Le instalé poco software extra: acrobat reader, kindle para android y un par de aplicaciones de GPS. La he utilizado bastante para hacer fotografías y vídeos caseros. En lineas generales estoy bastante conforme con la  tablet. Encontré la calculadora que venia de fabrica un poco pobre, por lo que decidí buscar algo mejor.

Si bien mis actividades diarias me demandan poco de una calculadora científica, decidí buscar una de ese tipo. Que soportara lo habitual: logaritmos y exponenciales, trigonometría, funciones hiperbólicas.  otra cosa útil era la capacidad de graficar.

Hay una oferta grande de calculadoras para dispositivos android en Google Play, aca dejo un comentario de lo que me gustó más:
  • Scientific Calculator: de Scalea Software. Si aspecto recuerda a una calculadora clásica HP o TI. No gráfica, esto no la hace menos valida.
  • Droid48sx: Basada en un emulador de calculadora HP. Trabaja con notacion polaca, esto puede ser incomodo si no se tiene costumbre. 
  • TechCalc: Esta calculadora grafica permite representar varias funciones simultaneamente. 
Me quedé con TechCalc, lo unico que me molesta son los avisos. Pero la calculadora esta muy completa, puede ser útil para un estudiante de secundaria o bachillerato,  incluso cursos universitarios.

martes, 11 de noviembre de 2014

Rotacion de logs

Esta entrada del blog tiene que ver con mi trabajo con fortigate y syslog-ng. Una vez configurados los appliances para que loguee mediante syslog, es necesario administrar los logs. De no hacerlo los logs crecerán indefinidamente. La rotación de logs consiste en remplazar un archivo de logs "lleno", por uno nuevo vacío. Los archivos viejos se guardan de acuerdo a un criterio a definir o necesidades particulares de la instalación. 

En mi caso concreto estoy trabajando con logrotate, una herramienta disponible en muchas distribuciones Linux. Ha sido portada a varios UNIXes (Solaris, AIX). Si no se cuenta con una herramienta como logrotate, es necesario desarrollar un script ad hoc. En una próxima entrada del blog voy a poner uno. Estoy trabajando en SuSE enterprise, algún camino podría cambiar en otra distribución.

EN el directorio de configuración de logrotate, /etc/logrotate.d/, agregue un archivo para rotar los logs de los fortigate. Va el listado del archivo:


/var/log/fortigate {
    create 0644 root root
    compress
    dateext
    daily
    rotate 30
    missingok
    postrotate
        /etc/init.d/syslog reload > /dev/null
    endscript
}


Por cada archivo o grupo de archivos a rotar tendremos una entrada como esta. Tenemos las entradas prerotate o postrotate, donde podemos poner un script que se corre antes o después de la rotación. La entrada daily define que la rotación sea diaria, podría ser weekly o monthly para rotar semanalmente o mensualmente. Otra alternativa es rotar por tamaño del archivo, en lo personal no me gusta, prefiero rotar por fecha. Otras entradas importantes son rotate, compress y missingok. Con rotate definimos cuantos archivos queremos conservar. El comando compress es opcional pero muy recomendado, los archivos son comprimidos luego de rotados. Podría darse que un archivo de logs no exista, para esto tenemos la directiva missingok. En la pagina man del paquete se puede ver mas opciones, el paquete es muy versatil.

lunes, 10 de noviembre de 2014

Limpiar directorio SoftwareDistribution

Buscando solución a un problema de respaldos encontré este directorio consumiendo casi 2GB de disco. La mayoría de los archivos aparentaba estar allí hace mucho, decidí borrar ese directorio. Una búsqueda en los foros de soporte de microsoft me llevo a armar el procedimiento que detallo acá:

  • Ir a Inicio, opción ejecutar. Allí poner cmd y dar enter.
  • En la línea de comando ejecutar  net stop wuauserv.
  • Renombrar el directorio c:\windows\softwaredistribution a
    c:\windows\softwaredistribution.old.
  • Iniciar nuevamente el servicio: net start wuauserv.
  • Cerrar la ventana
El procedimiento es simple, permite recuperar algo del espacio desperdiciado. Hay más, tendré que dedicar futuras entradas del blog a esto. 

lunes, 3 de noviembre de 2014

Respaldos MOODLE

He estado trabajando en la actualización de un servidor Moodle muy viejo, versión 1.9.4. Para llevar este servidor a la ultima versión estable, es necesario hacer una serie de actualizaciones pasando por varias de las versiones intermedias. Se aconseja realizar respaldos totales, previo a cada actualizaciones. Es deseable que en el respaldo esté el directorio de datos (MOODLEDATA), la base de datos y el directorio que contiene los ejecutables.

Para este trabajo hice un script que dejo acá:

#!/bin/sh
# Respaldo Total de Moodle


MYSQLDUMP=$(which mysqldump)
TAR=$(which tar)


# Directorio Instalación de Moodle
MOODLE_DIR="/var/www//moodle"

# Directorio de Datos de Moodle
MOODLE_DATA_DIR="/var/moodledata"


APACHE_CONF_DIR="/etc/apache2"
PHP_CONF_DIR="/etc/php5"

MYSQL_USER="mysql_administrator"
MYSQL_PASSWORD="Muy.Secreta"
MYSQL_DB="moodle_db"

SERIAL=$(date +%Y%m%d-%H%M)

BKP_DIR="/home/RESPALDO"
BKP_FILE="TOTAL-MOODLE_EMPRESA"

echo "Comienza Respaldo de Moodle"
echo "DUMP de Base de datos"
${MYSQLDUMP} -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_DB} > ${BKP_DIR}/${MYSQL_DB}.sql
echo "Respaldo de Moodle y MoodleData"
${TAR} -cvzf ${BKP_DIR}/${BKP_FILE}-${SERIAL}.tar.gz ${MOODLE_DIR} ${MOODLE_DATA_DIR} ${PHP_CONF_DIR} ${APACHE_CONF_DIR} ${BKP_DIR}/${MYSQL_DB}.sql
echo "fin"

 Pendientes

Este script es muy básico, bien ad hoc. El script puede hacerse mas generico, Moodle trabaja con las bases de datos más populares. La mayoria de las instalaciones trabajan con MySQL, pero estaría bueno soportar otras bases de datos. Es útil contar con algo de documentación y un paquete de instalación, para las distribuciones más populares.

jueves, 2 de octubre de 2014

configurar syslog-ng para logs de FortiOS

Esta entrada es una suerte de segunda parte, de la publicada semana atrás. Una vez que tenemos nuestros equipos Fortigate logueando a un servidor syslog es deseable que los logs vayan a uno o más archivos;  separando por dispositivo y/o tipo de mensajes. Trabajé con syslog-ng, que facilita mucho este trabajo.

Paso previo: configurar syslog-ng para logueo remoto

 Esto debería estar pronto, es útil para las pruebas de configuración de los clientes remotos. En el archivo de configuración de syslog-ng, buscar la sección source src, alli descomentar o agregar la siguiente linea:

udp(ip("0.0.0.0") port(514));

Esta linea  habilita a recibir mensajes de clientes remotos. En equipos con múltiples interfaces de red, si quisiéramos habilitar una sola interface, sustituir 0.0.0.0 por la IP de la interface que queremos utilizar.

Configurar filtros

Syslog NG marca el trafico mediante filtros, esas marcas serán utilizadas para redirigir el trafico. En  mi caso tengo los equipos fortigate configurados para loguear en la facility LOCAL7. Quiero que los logs generados por aplicaciones locales no se mezclen con los logs del fortigate. Asi queda configurado mi filtro para la facility local:

filter f_local { 
    facility(local0, local1, local2, local3,local4, local5, local6, local7)
    and not match('devname=FGT');
};

Este filtro marca todo el tráfico de las facilities local, menos el generado por dispositivos fortigate. En mi caso tuve que cambiar adicionalmente otros filtros:

filter f_messages { not facility(news, mail) and not filter(f_iptables)
and  not match('devname=FGT'); };

filter f_warn { level(warn, err, crit) and not filter(f_iptables)
and not match('devname=FGT'); };

Finalmente, configuré filtros específicos para dispositivos mis dispositivos fortigate:

filter f_ap    { facility(local7) and match('devname=FGT50'); };

filter f_forti  { facility(local7) and match('devname=FGT70'); };


En mi caso basta con que filtre por modelo de dispositivo, aquellos que tengan todos los dispositivos del mismo modelo deberán afinar los filtros. El tag devname trae el numero de serie, adicional al modelo.

Configurar destino del log

 Solo resta configurar el destino de los logs, en mi caso un archivo para access points y otro para firewalls:


destination apforti { file("/var/log/ap-fortigate"); };
log { source(src); filter(f_ap); destination(apforti); };

 

destination firewall { file("/var/log/firewall-fortigate"); };
log { source(src); filter(f_forti); destination(firewall); };


Conclusiones

 Esta configuracion la tengo funcionando hace varios meses. Para quienes no necesitamos las herramientas especificas de fortigate, es más que adecuada. Quienes tengan muchos dispositivos fortigate pueden necesitar configuraciones adicionales. Y no olvidar configurar la rotación de logs.