Debido a que Amazon no provee la capacidad de listar los grupos a los que pertenece una cuenta de Amazon WorkMail en ninguna de las consolas (Web o CLI), tuve la necesidad de desarrollar un script Bash que lo haga.

AWS sólo permite listar los miembros de un grupo pero no a la inversa (listar los grupos a los que un usuario es miembro). Sin embargo, es posible crear un script que busque a una cuenta pasada como parámetro uno por uno en la lista de grupos de la organización.

El código del script es el siguiente:

#!/bin/bash

if [ $# -lt 1 ]; then
  echo ""
  echo "$0 - Lista los grupos de correo de WorkMail a los que pertenece una cuenta"
  echo ""
  echo "Uso: $0 ALIAS"
  echo "  ALIAS es el nombre de una cuenta de correo (sin calificar)"
  echo ""
  echo "Ejemplo:"
  echo "  $0 linuxito"
  echo ""
  exit 1
fi

OID="completar con el ID de la organización"
WORKMAIL_GROUPS="/tmp/workmail_groups"

USER="$1"

echo "Grupos a los que pertenece la cuenta $USER:"

aws workmail list-groups --organization-id $OID --output text | sed -e 's/\t/;/g' | grep -v 'DISABLED' | cut -d';' -f2,4,5 > $WORKMAIL_GROUPS

while IFS=';' read ALIAS GID NAME; do
    if aws workmail list-group-members --organization-id $OID --group-id $GID --output text | grep $USER >/dev/null; then
        echo "  $NAME ($ALIAS)"
    fi
done < $WORKMAIL_GROUPS

rm $WORKMAIL_GROUPS

Uso del script:

emi@vaio:~/scripts$ ./workmail-listar-grupos.sh 

./workmail-listar-grupos.sh - Lista los grupos de correo de WorkMail a los que pertenece una cuenta

Uso: ./workmail-listar-grupos.sh ALIAS
  ALIAS es el nombre de una cuenta de correo (sin calificar)

Ejemplo:
  ./workmail-listar-grupos.sh linuxito

Ejemplo:

emi@vaio:~/scripts$ ./workmail-listar-grupos.sh linuxito
Grupos a los que pertenece la cuenta linuxito:
  Contacto (contacto@linuxito.com)
  Ventas (ventas@linuxito.com)
  Soporte (soporte@linuxito.com)

Esta herramienta resulta de utilidad para depurar el uso de grupos en una organización de Amazon WorkMail.

Compartí este artículo