From b1eab41d5a2fde4ef0bb0c1ff716b64a00324122 Mon Sep 17 00:00:00 2001 From: Victor LABORIE Date: Mon, 17 Sep 2018 16:46:25 +0200 Subject: [PATCH] Add a script for import alias from csv --- scripts/csv2ldap_alias.sh | 58 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 scripts/csv2ldap_alias.sh diff --git a/scripts/csv2ldap_alias.sh b/scripts/csv2ldap_alias.sh new file mode 100755 index 0000000..4cca274 --- /dev/null +++ b/scripts/csv2ldap_alias.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# +# Script for import evoadmin alias from stdin csv file +# +# CSV format must be : name;mail_address;alias +# + +set -eu + +tmp_file=$(mktemp --suffix=.ldif) +tmp_dir=$(mktemp --directory) +gid_file=$(mktemp) + +trap "rm -r ${tmp_file} ${tmp_dir} ${gid_file}" 0 + +ldapvi --ldapsearch|grep -E "^gidNumber:"|awk '{ print $2 }'|sort -n|tail -n1 > "${gid_file}" + +dc=$(grep "^base:" /root/.ldapvirc|awk '{ print $2 }') + +get_gid() { + domain=${1:-} + gid=$(ldapvi --ldapsearch --read "cn=${domain},${dc}" 2>/dev/null|grep -E "^gidNumber:"|awk '{ print $2 }') + if [ -z "${gid}" ]; then + lastgid=$(cat "${gid_file}") + gid=$((lastgid + 1)) + echo "${gid}" > "${gid_file}" + cat >> "${tmp_file}" < "${tmp_dir}/${name}" <> "${tmp_dir}/${name}" + grep -q "^maildrop: ${alias}$" "${tmp_dir}/${name}" || echo "maildrop: ${alias}" >> "${tmp_dir}/${name}" +done + +cat "${tmp_file}" "${tmp_dir}"/*|ldapvi --add --in