Última atividade 6 months ago

createsasluser.sh Bruto
1#!/bin/bash
2
3[ -f /etc/dehydrated/hook.sh ] && . /etc/dehydrated/hook.sh
4
5SASLDBFILE="/var/spool/postfix/etc/sasldb2"
6SASLDBPASSWD="$(/usr/bin/which saslpasswd2)"
7SASLDBLISTUSER="$(/usr/bin/which sasldblistusers2)"
8LOGFILE="/var/log/sasl/createsasluser.log"
9RSYNC="$(/usr/bin/which rsync)"
10PWGEN="$(/usr/bin/which pwgen)"
11DEFAULTDOMAIN="$(head -1 /etc/dehydrated/domains.txt | awk {'print $1'})"
12SYNC="1"
13
14while [[ ! ${USERNAME} || -z "${USERNAME}" ]]; do
15 read -p 'Username: ' USERNAME
16done
17while [[ ! ${DOMAIN} || -z "${DOMAIN}" ]]; do
18 read -e -i "${DEFAULTDOMAIN}" -p "Domain: " DOMAIN
19 DOMAIN=${DOMAIN:-$DEFAULTDOMAIN}
20done
21PASSAUTO="$(${PWGEN} -nc 14 -1)"
22while [[ ! ${PASSWD} || -z "${PASSWD}" ]]; do
23 read -e -i "$PASSAUTO" -p "Password: " PASSWD
24done
25
26if [ $(${SASLDBLISTUSER} -f ${SASLDBFILE}| grep "^${USERNAME}@${DOMAIN}"| wc -l) -gt 0 ]; then
27 echo "User ${USERNAME}@${DOMAIN} does already exist"
28 echo 1
29fi
30
31log() {
32 [ ! -d "$(dirname ${LOGFILE})" ] && mkdir $(dirname ${LOGFILE})
33 echo -e "$(date +"%Y-%m-%d %T") Created user ${USERNAME}@${DOMAIN} with Password: ${PASSWD}" >> ${LOGFILE} &&\
34 chmod 600 ${LOGFILE}
35}
36
37banner(){
38 echo ""; echo "The new user credentials"; echo "------------------------"
39 echo "Hostname: ${DOMAIN}"
40 echo "Username: ${USERNAME}@${DOMAIN}"
41 echo "Password: ${PASSWD}"
42 echo "Protocol: Submission (Port 587), StartSSL mandatory"
43}
44
45echo ${PASSWD} | ${SASLDBPASSWD} -p -c -f ${SASLDBFILE} -u ${DOMAIN} ${USERNAME} && \
46chmod 0660 ${SASLDBFILE} && \
47chown root:sasl ${SASLDBFILE} && \
48log && banner && \
49[ "${SYNC}" = "1" ] && \
50for HOST in ${HOSTS}; do
51 ${RSYNC} --delete -aze 'ssh' ${SASLDBFILE} ${HOST}:${SASLDBFILE}
52done