Archivo para 30 mayo 2011

ldapconv: script en bash para convertir entradas en base64 al consultar un servicio ldap

Active Directory no hace un trim de las entradas, por tanto, si en el momento de realizar una entrada queda un espacio al final de un campo de LDAP su política es convertirlo a base64. Esto hace que sea ilegible.

Este script traduce estas líneas y las deja con una indentación de 4 espacios en la línea siguiente.

#!/bin/bash
# conversor de ficheros de ldapsearch, traduce las lineas en base64
# por ratoncio
# ldapconv <ficheroorigen> <ficherodestino>
# ldapconv <ficheroorigen>

# funciones
joinLines ()
{
  while read linea;do
    echo "$linea"|grep -q ":";
    if [ $? -eq 0 ];then
      echo -ne "\n$linea";
    else
      echo -n "$linea";
    fi;
  done < "$ORIGEN"
echo -e "\n"
}

processLdap ()
{
  while read linea;do
    echo "$linea" >> "$DESTINO";
    echo "$linea"|grep -q "::";
    if [ $? -eq 0 ];then
      echo -en "   ">>"$DESTINO";
      echo "$linea"|awk '{print $2}'|base64 -d>>"$DESTINO";
      echo "">>"$DESTINO";
    fi;
  done<"$ORIGEN"
}

help ()
{
echo "SINTAXIS:";
echo "ldapconv <origen> <destino>";
echo "ldapconv <origen>";
}

# main
ORIGEN="$1";
ORIGENPROCESADO="/tmp/ldapconv"`date +%s`"-$RANDOM";
touch "$ORIGENPROCESADO";
if [ $# -eq 2 ];then
  joinLines > "$ORIGENPROCESADO";
  ORIGEN="$ORIGENPROCESADO";

  DESTINO="$2";
  > "$DESTINO"
  processLdap;
elif [ $# -eq 1 ];then
  case $1 in
    --help | -h)
      help;
      ;;
    *)
     joinLines > "$ORIGENPROCESADO";
     ORIGEN="$ORIGENPROCESADO";
     DESTINO="/dev/stdout";
     processLdap;
     ;;
  esac;
else
# sin argumentos, pero puede venir de un pipe
  readlink /proc/$$/fd/0 | grep -q "^pipe:";
  if [ $? -eq 0 ];then
    ORIGEN="/dev/stdin";
    joinLines > "$ORIGENPROCESADO";
    ORIGEN="$ORIGENPROCESADO";
    DESTINO="/dev/stdout";
    processLdap;
  else
    help;
  fi;
fi;
rm "$ORIGENPROCESADO";
Anuncios

Consumir un servicio web usando cURL

Se puede consumir servicios web usando cURL fácilmente de la siguiente manera:


curl -d @datos.xml -H "Content-Type: text/xml;charset=UTF-8;SOAPAction: urn:funcion_a_ejecutar" http://url_del_webservice

Donde datos.xml es un fichero xml en el que se pasan los parámetros necesarios para la operación:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ratoncio="http://url_del_webservice">
  <soapenv:Header/>
  <soapenv:Body>
    <ratoncio:funcion_a_ejecutar>
      <ratoncio:parametro1>valor1</ratoncio:parametro1>
      <ratoncio:parametro2>valor2</ratoncio:parametro2>
    </ratoncio:funcion_a_ejecutar>
  </soapenv:Body>
</soapenv:Envelope>

Filtrar PowerPoints en gmail

Este truquillo está muy  bien para filtrar correos que tengan powerpoints adjuntos (que odio con toda mi alma) sin tener que marcar como spammer al remitente. Los pasos son:

  • Habilitar la extensión de google labs: “enviar respuesta prediseñada
  • Escribir un correo nuevo y, en lugar de enviar, guardar como respuesta prediseñada.
  • Crear un filtro que contenga las palabras: filename:.pps OR filename:.ppt y marcar el checkbox “contiene archivos adjuntos“.
  • Habilitar las opciones: “Omitir Recibidos” (Archivarlo), “Aplicar la etiqueta” (para enviarlo a otra carpeta en gmail) y “Enviar respuesta prediseñada” (para responder automáticamente)

Cualquier correo que nos envíen conteniendo powerpoints será filtrado y comunicado al remitente de forma automática.