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