martes, 18 de octubre de 2016

Zimbra: Resetear password para un listado de cuentas


Esta tarde estuve trabajando en la creación de un script que nos permitiera resetear los password de un listado voluminoso de cuentas de correo electrónico de una implementación de Zimbra. Si no fuese por el script nos hubiese tocado resetear las claves una a una desde la consola gráfica de administración :S

El script lo bauticé como resetPasswd.sh, es bien sencillo y fácil de usar:
./resetPasswd.sh  
<FILE> es la ruta del archivo que contiene el listado de las cuentas de correo electrónico en el siguiente formato:
imarx@miempresa.com.ec
ehinojosa@miempresa.com.ec
jfranco@miempresa.com.ec
...
<NEW_PASSWORD> es el nuevo password que voy a colocar a todas las cuentas del listado.
  • Nota: En mi caso, para generar los archivos utilice la siguente instrucción:
    /opt/zimbra/bin/zmprov -l gaa miempresa.com.ec | grep ventas > /tmp/usuarios-ventas-07032012.txt
    
    Me ayudé del comando grep para encontrar un patrón específico que identifica a mis cuentas, de no existir dicho patrón toca generar el listado completo y depurarlo manualmente, aunque eso sigue siendo más rápido que hacer todo el proceso desde la consola gráfica jejeje
Ahora sí, con Ustedes, el bendito script :D:
#!/bin/sh
## Iknaxio Marx - 07/03/2012
## Resetear el password de un listado de cuentas
##
## Uso:
##   ./resetPasswd.sh <FILE> <NEW_PASSWORD>
##

echo ""

if [ $# -ne 2 ]
then
  echo "Argumentos incorrectos!!!"
  echo "  Uso: ./resetPasswd.sh <FILE> <NEW_PASSWORD>"
  echo ""
  exit -1
fi

if [ -r $1 ]
then
  ACCOUNTS=`cat $1`

  for ACCOUNT in $ACCOUNTS
  do
    echo -e "- $ACCOUNT..."
    /opt/zimbra/bin/zmprov sp $ACCOUNT $2
    /opt/zimbra/bin/zmprov ma $ACCOUNT zimbraPasswordMustChange TRUE
  done

else
  echo "El archivo $1 no existe!!!"
  exit -1
fi
Espero que les sirva.

Salu2
"Transporta un puñado de tierra todos los días y construirás una montaña" - Confucio