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 notación polaca, esto puede ser incomodo si no se tiene costumbre. 
  • TechCalc: Esta calculadora gráfica permite representar varias funciones simultaneamente. 
Me quedé con TechCalc, lo único 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.

martes, 16 de septiembre de 2014

logs a syslog en FortiOS 5.0 y 4.0

La semana pasada tuve que trabajar con un equipo fortigate, configurando que el mismo loguear a syslog. La novedad de este equipo es que esta con la versión 5 de FortiOS. En la versión 5 para configurar syslog es necesario hacerlo por linea de comando, en versiones previas donde se hacia por menú.

Configuración de logs en FortiOS 4.0
En la Knowledge Base de Fortigate encontré un documento que cubre este caso. Los equipos admiten loguear hasta 3 servidores syslog simultáneos. Para quien no quiere leer el documento, va aquí un resumen de la tarea. La primera parte es habilitar el envío de logs a syslog, para esto entramos a la CLI y digitamos algo como lo que sigue:

       config log syslogd setting
        set facility nombre
        set port puerto
        set server direccion_ip
        set status enable
   end

Si quisiéramos configurar servidores adicionales, basta con remplazar syslogd por syslogd2 o syslogd3. La facility se recomienda utilizar alguna de las local (local1 a local7). El puerto estandar de syslog es el 514/UDP. En el manual hablan de poner la dirección IP del servidor syslog, el nombre DNS debería funcionar bien, en la medida que pueda resolverse con los DNS configurados en el appliance. Luego de configurado para probar esto desde la linea de comando ejecutamos:

       diag log test

Esto enviará a el servidor syslog un mensaje por cada categoría configurada. La configuración por defecto manda todos los eventos del equipo, para configurar que eventos enviamos:

      config log syslog filter
             set evento (enable|disable)
      end

Con estas directivas se puede configurar el envío a syslog tanto en FortiOS 4.0 como 5.0, en 4.0 es más cómodo hacerlo desde la interfase WEB. Lamentablemente Fortinet sigue, con cada nueva versión, sacando de la interfase WEB aquellas características que facilitan la integración con terceros.Para una proxima entrada del blog, voy a publicar como configurar el syslog para acceder a los logs de los equipos fortigate.

miércoles, 10 de septiembre de 2014

Restringir login en Windows con Active Directory

En un dominio necesité restringir el acceso de un usuario a ciertos equipos. Cuando se crea el usuario active directory este queda habilitado para acceder a todos los equipos del dominio. Si se quiere restringir a un equipo en particular, se listan los equipos a los que puede acceder. 




Una pista de que esta restricción está activa puede ser un mensaje como este: La configuracion de su cuenta no permite que use este equipo. Pruebe con otro equipo. Habilité a un usuario a acceder a un equipo adicional, no recordaba que había configurado esta restricción, de ahi este post..

miércoles, 27 de agosto de 2014

Aprender electrónica

Quiero aprender más electrónica. En mi adolescencia hice cursos de "Técnico en Radio y TV". Esos cursos se centraban en el diagnostico y reparación de fallas comunes en radios, equipos de audio y televisores. Cubrían poca cosa de fundamentos de electrónica, necesaria para diseñar y/o adaptar circuitos. Algo de eso me sirvió para diagnosticar fallos en fuentes y algún equipo periférico.

En facultad tuve un curso de arquitectura de computadoras, que dedicaba un tiempo importante a fundamentos de electrónica digital. Trabajé con compuertas lógicas y simulamos unos cuantos circuitos.

Libros

 Me gusta recurrir a libros, no reniego de los recursos en linea pero tengo habito de lectura. Acá van algunos libros que a mi entender pueden ser útiles para el autoaprendizaje. 

  • Electrónica básica para ingenieros: Este libro esta pensado para quienes necesitan saber electrónica, sin ser el centro de su actividad profesional. El libro esta disponible en la pagina personal del autor.Es de los pocos que he visto en español que van hacia lo que busco. 
  • Understanding Basic Electronics: Este libro de ARRL está orientado a radioaficionados, es igualmente útil al aficionado. Tiene dos libros complementarios, que cubren temas de radio y antenas. 
  • Basic Electronics: Una reimpresión de un viejo libro de la US Navy, aun vigente.No es un libro profundo, apunta a que el personal embarcado adquiera conocimientos básicos que puedan serle de utilidad en su trabajo diario. Tiene un libro complementario de electricidad. 
  • Make: Electronics: Libro de la revista make, aparenta ser bastante llano.Pone énfasis en aprender haciendo (learn by doing).

Sitios

Me queda mucho por escribir, especialmente de software. La simulación por software de circuitos tiene ventajas y baja costos; para llegar a armar un circuito eliminando errores.

Actualizacion 20/09/2014: Por una publicacion de un amigo en Facebook, me entero de esta nota de EFYTimes, con muchos enlaces útiles.

lunes, 18 de agosto de 2014

Direcciones virtuales en Zimbra

Un problema que tuve que resolver días atrás en Zimbra: tengo que redirigir el correo que llega a una direccion a otra direccion externa.

Conozco algo la estructura interna de Zimbra, como el MTA es Postfix salí a buscar la solución por el lado de tablas de direcciones virtuales. Y no dudo que sea posible hacerlo, pero implica cambiar archivos de configuración de zimbra.

La "forma zimbra" de resolver esto es con listas de Correo. Soy consciente de estar abusando de una herramienta, pero no implica hacer cambios que en un upgrade puedan dejar de andar.

Me queda en mi lista de pendientes tratar de resolverlo con direcciones virtuales, de alguna forma que sea compatible con la configuración interna de zimbra.

lunes, 21 de julio de 2014

Diagramas de Red con Software libre

El blog viene quieto, con poca actividad. Lejos de poder sentarme a escribir, los últimos meses han venido bastante atareados. Hoy leí a Suren, en Google+, me hizo acordar algo interesante a compartir.

En mayor o menor medida, muchos tenemos necesidad de representar gráficamente topologias de redes o arquitecturas física de soluciones a desplegar. El estándar de facto para esta tarea es Visio, un paquete opcional para de Microsoft Office. Con todas las contras que esto tiene, empezando por el costo. 

Una de las primeras herramientas que utilicé es Xfig, un programa bastante antiguo. Tiene una buena biblioteca para dibujar diagramas. Es capaz de exportar SVG, que ayuda a integrar esos diagramas en otros documentos. La interface de usuario es difícil de aprender, hay opcionesmodernas y amigables al usuario.
Circuito dibujado en XFig
 DIA es una opción muy popular, ademas de ser pensado como una alternativa a Visio. Kivio/Calligra Flow es otra alternativa, aparentemente más pulida. Con DIA supe trabajar, los resultados finales son adecuados.

DIA en acción


Lo que me motivó a escribir es la posibilidad de usar Libre Office (u OpenOffice) para dibujar diagramas de red. Hace mucho tiempo Sebastian Criado publicó al respecto en su blog, creo que lo comentó en una de las listas del UYLUG. El post del blog esta aqui, para el quiera leerlo. Suren contaba de un POST que en el sitio de VRT Systems hay disponible para descarga formas y clipart para diagramas de redes, para Libre/Open Office.

Los gráficos son de muy buena calidad, cubren equipo actual de uso corriente.

jueves, 3 de julio de 2014

OpenCobol: vivo y activo !!!!!!

A fines de Febrero nos visitó en la oficina un vendedor, ofreciendo actualizar el compilador de COBOL que utilizamos en uno de nuestros servidores. No programo en COBOL, estoy familiarizado con el lenguaje. Destacaba la conectividad con Bases de datos y facilidades para desarrollo WEB de la nueva versión.

La visita despertó mi curiosidad por el estado de los compiladores de COBOL libres. Recordaba haber leído sobre los mismos hace mucho, en Linux Journal. En ese momento los compiladores solo podían compilar programas sencillos, SQL embebido o conexión a bases de datos era un sueño. Recordaba un compilador llamado Tiny Cobol, con el que compile algún programa de Pruebas. Este proyecto está detenido desde principios del 2011. Buscando información rencontré el proyecto opencobol, actualmente conocido como GNU COBOL.

Y mirando el proyecto encontré:
  • Un compilador que soporta una parte sustancial del COBOL 85 y COBOL 2002. 
  • Muchas extensiones de los compiladores COBOL existentes.
  • Binding a GTK, para aplicaciones gráficas de escritorio.
  • Integración con MySQL y PostgreSQL. No es soportado SQL embebido, lo anterior requiere algo de programación en C. Hay ejemplos de integración con Oracle y DB/2.
  • Hay reportes de usuarios en ambientes de producción, desde el 2005. Como caso emblemático esta la prefectura de Nagasaki, que tiene un sistema de sueldos y jornales portado a OPENCobol.
No esperaba encontrar un producto tan fuerte y con un desarrollo tan activo. Me animo a decir que es una alternativa a considerar, para migrar código existente de ambientes cerrados.

jueves, 26 de junio de 2014

Ayudas para programar en C

Estoy escribiendo un pequeño programa en C, para sacar texto desde un archivo binario. Estaba necesitando refrescar algunos conocimientos y el particular algunas funciones de la biblioteca estandar.

Un recurso obligado a tener a mano es El lenguaje de Programacion C, también conocido como el "Kernighan y Ritchie". Un libro que intimida y asusta al novicio, pero un invaluable ayuda como referencia.
El Lenguaje de Programación C, segunda edicion.
No encuentro en mi casa el libro de marras, perdido entre tantas cosas que aun no acomodé desde la ultima mudanza. Buscando recursos en linea encontré esta referencia de la biblioteca estandard. Tiene buenos ejemplos, es una suerte de man versión hipertexto.

miércoles, 21 de mayo de 2014

¡¡Segundo !!!!

El mes de mayo viene movido. De ahí las pocas publicaciones del blog. No me falta inspiración, si tiempo para plasmarla en el blog. Antes de empezar a escribir este post terminé uno sobre mi experiencia con el modem bandluxe, que tenia en el tintero hace varias semanas. No quería dejar pasar que en Mayo este blog cumple dos años. 

 Mirando el año

Desde febrero el blog es parte de agujero del mate, invitado por Rodolfo Pilas. No tengo elementos objetivos para cuantificar como ha variado el trafico a Raiz de esto. 

Tengo la impresión de tener más trafico latinoamericano, especialmente de Mexico, Ecuador y Peru. El trafico ha continuado creciendo, a un ritmo mas lento que en el primer año. Sobre fin de año vi un aumento importante de trafico.

Este año me animé a escribir comentarios de libros, comenzando con Hacker epico. Tengo leidos algunos otros libros, pero no he encontrado tiempo para escribir sobre ellos.He escrito más sobre Windows, tengo que lidiar con una cantidad importante de PCs con ese Sistema Operativo. Escribí menos de fotografía de lo que me hubiera gustado, coincide que estoy haciendo menos fotografía.

Mi valoración y respeto a los blogueros que publican activamente ha crecido. Para quienes no contamos con el don de la pluma, escribir una buena entrada es una tarea difícil. Sumarle a eso el tiempo, eventualmente erogaciones, para generar experiencias dignas de ser publicadas en el blog. Me cruzo con blogs como dolce uruguay, con un volumen y calidad de producción envidiable. O La Frase del Viernes, que casi todas las semanas publica una crónica. No quiero mencionar a aquellos blogueros casi profesionales, una categoría casi imposible de alcanzar.

martes, 20 de mayo de 2014

SCRIPT para Modem BANDLUXE LTE en Linux

Semanas atrás recibí unos de estos modems. El objetivo es utilizarlo para una conexión de emergencia, en caso de caída de la conexión principal cableada; tengo que levantar la conexión mediante un script. ANTEL entrega estos módems como oferta de conexión inalámbrica. Probado en mi notebook la velocidad de conexión es buena, la conexión estable.
Modem BnadLuxe (foto del sitio del fabricante)
 ANTEL informa que el módem esta soportado en Ubuntu. Fuera de esa mención, no hay más datos para hacerlo funcionar en Linux. Buscando información llegue al blog de Fernando da Rosa, donde cuenta en una entrada su experiencia y da instrucciones para utilizar el modem. La información del blog de Fernando es muy clara, pero en mi caso necesito establecer la conexión desde un script sin intervención de un usuario/operador, seguí buscando información.  Otra entrada en el blog Marvin Rebooted me dio una idea. El soporte técnico del fabricante me envió un PDF, con indicaciones similares a lo publicado en los blogs antemencionados. Con un script armado, que no funcionaba bien, hice una pregunta en la lista UYLUG-Linux.

Por correo, Fernando da Rosa me sugirió ver otra pagina, cuyo autor seria también Uruguayo.  Esta menciona a USB-Modeswitch, a lo que podría dedicarle un entrada entera del blog. Uno de los primeros escollos que enfrenté era no tener instalado este paquete, que resolví conversando con Enrique Verdes. Sin él, el módem es reconocido como un disco USB o pendrive. Esta ultima pagina hace un estudio bastante exhaustivo del módem, presentando varias alternativas para utilizarlo. Después de varias pruebas, y una tarde de dedicación casi exclusiva al problema, tengo un script que establece la conexión.

 Configuración Inicial

Para trabajar con más comodidad, decidí sacarle el PIN a la SIM del MÓDEM. Hecho esto, con las instrucciones de Fernando da Rosa seleccioné la conexion de ANTEL. Hecho esto, el modem se puede utilizar con el script que publico a continuación.

El Script

#!/bin/sh
# Start Internet connection with BandLuxe C505 LTE modem

# (c) 2014 Andres Tarallo (atarallo@gmail.com)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3 of the License.
 
# Path might be customized to your particular installation

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

if [ "$( dmesg|grep 'Manufacturer: BandRich, Inc.' |wc -l)" = "0" ]; then
        echo "No modem availiable"
        exit 1
else
        # Modem detected, lets get it's parameters and info
        for i in $(dmesg |grep 'GSM modem (1-port) converter now attached'|tail -1); do SERIAL_PORT=${i}; done
        ETHERNET_PORT=$(dmesg |grep 'cdc_ether'|grep ': register '|awk '{print $5}'|cut -f1 -d':'|tail -1)
        echo "Modem detected"
        if [ -c "/dev/${SERIAL_PORT}" ]; then
                TTY="/dev/${SERIAL_PORT}"
        else
                echo "No terminal found, modem might be misconfigured"
                echo "make sure you have usb-modeswitch installed"
                exit 1
        fi
        if [ ! -n ${ETHERNET_PORT} ]; then
                echo "Ethernet port not present or missconfigured"
                exit 1
        fi
fi
echo "\nConfiguring Modem (${TTY}) "
echo  "at\$wancall=1" > ${TTY}
echo "\nConfiguring Network Card (${ETHERNET_PORT})"
dhclient -4 ${ETHERNET_PORT}
echo "Done !!!!!"

Pendientes (To do list)

El script publicado funciona correctamente, admite mejoras. Lo probé en mi notebook con OpenSuSE; basado en el mismo tengo en producción, en un PC con Ubuntu 12.04, una versión que agrega algunas rutas estáticas necesarias donde se utiliza el módem. 

Algunos pendientes:
  • Documentación: Un README y quizás manpage.
  • Programación defensiva: Chequear que la conexión no esté activa, verificar que la conexión luego de establecida. Esto ultimo podría  hacerse con pings a los DNS de Google  o alguna otra IP publica que admita pings. En la misma linea, seria interesante chequear la configuración de DNS. Otros chequeos útiles (necesarios) es verificar que los comandos utilizados sean ejecutables por el script.
  • Parametrización: El script tiene algunos valores cableados. Seria util tener un archivo de configuración. 
  • Empaquetarlo: Para facilitarle la vida a usuarios finales y administradores de sistemas. Seria útil contar con paquetes DEB y RPM, para las distribuciones más populares. 
  • Gestion de proyecto: Subir el script a algún repositorio  que permita hacer versionado y llevar listas de bugs. Algo tipo Sourceforge o Savannah

Esta lista de pendientes no es exhaustiva ni está cerrada. Seguramente lo primero que encare sea subir el script a un sitio que me facilite la gestión del desarrollo.

miércoles, 9 de abril de 2014

Vulnerabilidad de OpenSSL (Heartbleed)

OpenSSL es una implementación de fuente abierta de los protocolos SSL y TLS. Es utilizada por la mayoría de los sistemas operativos tipo Unix , OpenVMS y Windows. La biblioteca proporciona funciones criptograficas básicas y de utileria. 

Esta biblioteca se utiliza en muchos paquetes, siendo quizas su cara más visible los servidores WEB seguros. Utilizados para intercambiar información sensible, como datos personales o tarjetas de crédito.

El pasado 9 de abril se publicó la existencia de un bug, que se ha dado a llamar HeartBleed. El numero de vulnerabilidad en MITRE es CVE-2014-0160. Hay un sitio que explica el alcance de la vulnerabilidad. Y para los que quieran revisar si sus servidores web son vulnerables, acceden a este sitio. La mayoría de las distribuciones Linux ya tienen disponibles parches, que mitigan el problema o resuelven el problema.

sábado, 22 de marzo de 2014

FLOSS en AIX

Actualmente estoy trabajando bastante en AIX. Al igual que me pasó con Solaris, siento la falta de muchas de las herramientas a las que estamos acostumbrados en Linux.

Y como el post de unos días atrás, en AIX hay varios recursos a disposición. IBM portó las herramientas para trabajar con paquetes formato RPM. Esto facilita mucho la tarea de empaquetar software para AIX.

Hay varios sitios desde donde bajar software:
  • AIX Toolboox: Mantenido por IBM, las versiones de algunos paquetes son viejas.
  • BULLFreware:   Mantenido por la empresa homónima, cubre las versiones 5 y 6 de AIX.
  • OSS4AIX: Este sitio tiene paquetes para las versiones 5, 6 y 7 de AIX. En general los paquetes son bastante nuevos. El propietario del sitio afirma que sus paquetes son totalmente compatibles con los paquetes de AIX Toolboox.
El contar con las herramientas para gestionar paquetes RPM facilita mucho portar paquetes desde distribuciones Linux. Hace unas semanas atrás instalé algunas herramientas para generar PDFs y Postcript desde OSS4AIX, no tuve mayores problemas de compatibilidad con lo ya existente.

viernes, 21 de marzo de 2014

Activar Journal en filesystems NTFS

A raiz de un problema con los respaldos, encontré que tenia que activar el change journal de un servidor Windows. Esta bitacora puede ser utilizada por sistemas de respaldo, para saber que archivos y directorios cambiaron desde el ultimo respaldo. 

Para activarla basta con ejecutar:
fsutil usn createjournal m=1000 a=100 C:

Y para saber si esta activa:
 fsutil usn queryjournal C: 

Cuando esta activa, la salida es algo como esto:

       Id. de diario de USN    : 0x01cd32a607fbd462       Primer USN              : 0x00000000e9300000       Siguiente USN           : 0x00000000eb522420       USN mínimo válido       : 0x0000000000000000       USN máximo              : 0x7fffffffffff0000       Tamaño máximo           : 0x0000000002000000       Diferencia de asignación: 0x0000000000400000

En las versiones más nuevas de windows es necesario ejecutarlo con shell de administrador. Hay una pagina con una explicación bastante escueta de las opciones del comando fsutil.

martes, 11 de marzo de 2014

FOSS en SOLARIS

Hace más de 15 años tuve mi primer contacto laboral con Solaris, entrando así al mundo de UNIX. Hacia un buen rato que trabaja en Linux, muchas herramientas eran familiares. Pero se extrañaban las Core Utils, el VIM y muchas de los paquetes que estamos acostumbrados en cualquier distribución. 

Muchos administradores de sistemas Solaris compilan lo que necesitan, ese fue el primer camino que seguí. Es una tarea nada trivial, en paquetes con muchas dependencias como PHP. Buscando paquetes pre compilados llegue a SunFreeWare. Este sitio empaquetaba mucho software libre, para distintas versiones de Solaris. Soportando desde la versión 2.5 hasta las últimas, en arquitecturas SPARC y X86. Lamentablemente, el sitio cerró las descargas a fines del pasado año. En su lugar, esta el sitio UNIXpackages. Es un servicio por suscripciones, con más software del que soportaba el sitio original. No lo he utilizado, es a tener en cuenta.

Solaris ha evolucionado mucho en todo este tiempo, proveyendo mucho software libre, sin necesidad de compilar o recurrir a terceros. Se puede ver un listado parcial aqui, para la ultima versión. Facilita mucho el trabajo, hay que reconocer que esta lejos de la oferta de las distribuciones Linux más populares.

jueves, 20 de febrero de 2014

Extensiones de Oracle para PHP

Dando soporte, donde un desarrollo en PHP debe utilizar una base de datos  Oracle, decidí documentar el proceso. MySQL y PostgreSQL  vienen como parte de la mayoría de las instalaciones de PHP. En otras bases de datos, ya me pasó con Informix, es necesario agregarlas en forma manual. No suele haber paquetes precompilados

Encontré esta guia en el sitio de SuSE, que con algunos cambios y adaptaciones aplique con éxito. Brevemente, esto es lo que hay que hacer:

  • Instalar PHP-devel: la forma mas simple de hacer esto es desde YaST, que resuelve automaticamente las dependencias. Si estamos trabajando con SLES, necesitaremos el SDK. 
  • Instalar la extensión PECL de Oracle: Se baja desde esta pagina, en el sitio de PECL. Descomprimir el archivo, cambiarse al directorio creado y correr phpize.Se creara un script configure. Fijamos la variable de ambiente ORACLE_HOME, para que apunte al directorio de instalacion de Oracle. Para concluir, ejecutamos: ./configure ‑with‑oci8=shared,$ORACLE_HOME y luego make install.
  • Agregar la extensión en php.ini: En SuSE hay dos php.ini, uno para apache y otro que aplica cuando se ejecuta desde linea de comando. Hay que agregar: extension=oci8.so.
Terminada la instalación solo resta probarlo.

lunes, 17 de febrero de 2014

Booteo Interactivo ...

Pocas veces he tenido problemas con los scripts de booteo. Los scripts que corren en el booteo están muy probados. Pero siempre hay algo que puede fallar. Y días atrás fallo, un servidor tenia problemas, algunos comandos tenían comportamiento extraño. Decidimos sacarlos fuera de linea e investigarlo. Al bootear varios scripts fallaban. Para resolver esto, decidimos utilizar el booteo interactivo. No hay un consenso de como implementar esto, cada distribución lo maneja a su antojo.
  •  RedHat/Fedora/Centos: Los arranque siempre dan la posibilidad de bootear interactivo. Al bootear el sistema, cuando aparece el mensaje "Welcome to ..." presionamos I. Previo a ejecutar cada script de arranque pide confirmacion.
  • SuSE/OpenSuSE: Es necesario modificar un archivo de configuración, para habilitar el booteo interactivo. El archivo a editar es /etc/sysconfig/boot. Alli las opciones mas relevantes son: PROMPT_FOR_CONFIRM y CONFIRM_PROMPT_TIMEOUT. Una vez cambiado este archivo, arrancar el equipo. En cada script, pedirá confirmacion, si en el plazo definido en CONFIRM_PROMPT_TIMEOUT no se confirma, asume que se quiere ejecutar el script.
  • Debian: En esta disitrbucion se recomienda arrancar el equipo en runlevel 1, y ejecutar luego uno por uno los scripts del runlevel habitual del equipo, en el orden estipulado. 
  • Ubuntu: Se puede grabar un log del arranque. Si alguien conoce como hacer un boot interactivo en Ubuntu que pase el dato.


sábado, 8 de febrero de 2014

Que no falte la inspiracion ....

Para quienes tenemos un interés en la fotografía, es importante ver el trabajo de otros fotógrafos. Los que conocimos a través de algún curso, o por asistir a exposiciones.

Ansel Adams
Encontré este blog, donde hay una entrada con un completo listado de 81 fotógrafos. Clasificados según el campo de la fotografía en que desarrollaron mayoritariamente su trabajo. Este es el listado.

Sebastiao Salgado

Matando Zombies .....

No me refiero a los protagonistas de The Walking Dead, ni al personaje del Vudu Haitiano.En el folclore UNIX se conoce por Zombies a procesos que completaron su ejecución,  pero conservan una entrada en la tabla de procesos.

En un servidor donde corro una aplicación legada, encontré varios zombies. Para poder matar el proceso zombie, es necesario conocer su proceso padre. Para esto ejecutamos:

ps -o ppid  PID_ZOMBIE 

Con el PID del padre, podemos matar al padre; para luego matar el proceso zombie. Al menos para mi no es habitual lidiar con zombies, es bueno tener a mano la receta para hacerlo.

martes, 14 de enero de 2014

Configurar programas y Servicios en el arranque de Windows

En otra entrada del blog, comentaba como mejorar la experiencia de usuario en PCs que utilizan Windows. En ese post no trate en detalle como controlar programas y servicios en el arranque del sistema operativo.

La herramienta para esta tarea es MSConfig. Es parte integral de Windows desde Windows 98, pero es posible instalarlo en Windows 2000 y 95. Su nombre oficial es Configuración del Sistema en Windows Vista,7 y 8. En versiones anteriores se llama Utilitario de Configuración del Sistema. Desde esta utilidad se pueden configurar muchas cosas, voy a enfocar las que me interesan: programas del arranque y servicios.En las respectivas pestañas, es posible elegir que queremos que se ejecute en el inicio del sistema. 

Pestaña de programas

Servicios en el arranque
De aqui podemos eliminar programas como los "controles de actualizaciones"; que pueden ser muy útiles. Pero no dejan de ser molestos e inconvenientes en algunos contextos.

lunes, 6 de enero de 2014

Generar Archivos ZIP autoextraibles en Windows, desde Linux

Tengo necesidad de intercambiar archivos con otra empresa. Esta empresa me pide que le enviemos los archivos comprimidos en formato ZIP autoextraible. Los archivos se generan en sistemas UNIX y Linux, por lo que queremos automatizar toda la tarea allí, sin involucrar un servidor Windows.

Un ZIP autoextraible es un archivo que lleva incrustado el ejecutable para extraerlo. Buscando en varias paginas, encontré como generar desde Linux (en produccion AIX). Necesito pkzip para Linux (o UNIX), y el ejecutable de UNZIP para DOS/Windows. Con estas herramientas instaladas genero el ZIP:

zip SALIDA.zip archivos_a_enviar

Ahora agrego el ejecutable:

cat  unz552xn.exe SALIDA.zip > SALIDA.exe

Y para tener el archivo pronto para enviar:

zip  -A  SALIDA.exe

Hace varios meses que tengo esta solución funcionando, sin problemas. Solo faltaba publicarla en el blog.