#!/usr/bin/env bash _source_host=d-alt.mx.oopen.de _databases="sympa" _sync_dirs="/data/sympa /usr/local/sympa/arc /usr/local/sympa/bounce /usr/local/sympa/etc /usr/local/sympa/spool /usr/local/sympa/static_content" #_sync_dirs="/data/sympa /usr/local/sympa" sympa_user=sympa sympa_group=sympa remote_mysqldump_binary=/usr/local/mysql/bin/mysqldump # ------------- # --- Some functions # ------------- echononl(){ echo X\\c > /tmp/shprompt$$ if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then echo -e -n "$*\\c" 1>&2 else echo -e -n "$*" 1>&2 fi rm /tmp/shprompt$$ } error(){ echo "" echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*" echo "" } warn (){ echo "" echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*" echo "" } info (){ echo "" echo -e "\t[ \033[32m\033[1mInfo\033[m ]: $*" echo "" } echo_done() { echo -e "\033[80G[ \033[32mdone\033[m ]" } echo_ok() { echo -e "\033[80G[ \033[32mok\033[m ]" } echo_warning() { echo -e "\033[80G[ \033[33m\033[1mwarn\033[m ]" } echo_failed(){ echo -e "\033[80G[ \033[1;31mfailed\033[m ]" } echo_skipped() { echo -e "\033[80G[ \033[33m\033[1mskipped\033[m ]" } echo "" echononl " Shutting down sympa.." systemctl stop sympa if [[ "$?" = "0" ]]; then echo_ok else echo_failed fi echo "" _dir=/data/sympa for _dir in $_sync_dirs ; do echononl " Syncing ${_dir}.." rsync -a -e ssh --delete ${_source_host}:$_dir `dirname ${_dir}` > /dev/null 2>&1 if [[ "$?" = "0" ]]; then echo_ok else echo_failed fi done echo "" for _db in $_databases ; do echononl " Update Database $_db from ${_source_host}.." ssh ${_source_host} "$remote_mysqldump_binary --login-path=local --opt $_db" | mysql --login-path=local $_db if [[ "$?" = "0" ]]; then echo_ok else echo_failed fi done echo "" echononl " Syncing /etc/postfix/sympa_aliases" rsync -a -e ssh ${_source_host}:/etc/postfix/sympa_aliases /etc/postfix/ > /dev/null 2>&1 if [[ "$?" = "0" ]]; then echo_ok else echo_failed fi echononl " Changing Ownership (sympa:sympa) of /etc/postfix/sympa_aliases" chown ${sympa_user}:$sympa_group /etc/postfix/sympa_aliases if [[ "$?" = "0" ]]; then echo_ok else echo_failed fi echononl " Syncing /etc/postfix/sympa_domains" rsync -a -e ssh ${_source_host}:/etc/postfix/sympa_domains /etc/postfix/ > /dev/null 2>&1 if [[ "$?" = "0" ]]; then echo_ok else echo_failed fi echononl " Create Postfix lookup table /etc/postfix/sympa_domains.db" postmap btree:/etc/postfix/sympa_domains if [[ "$?" = "0" ]]; then echo_ok else echo_failed fi echononl " Syncing /etc/postfix/sympa_transport" rsync -a -e ssh ${_source_host}:/etc/postfix/sympa_transport /etc/postfix/ > /dev/null 2>&1 if [[ "$?" = "0" ]]; then echo_ok else echo_failed fi echononl " Syncing /etc/postfix/sympa_virtual_aliases" rsync -a -e ssh ${_source_host}:/etc/postfix/sympa_virtual_aliases /etc/postfix/ > /dev/null 2>&1 if [[ "$?" = "0" ]]; then echo_ok else echo_failed fi echo "" echononl " Reloading Postfix Service.." systemctl reload postfix if [[ "$?" = "0" ]]; then echo_ok else echo_failed fi echononl " Starting sympa listmanager.." systemctl start sympa if [[ "$?" = "0" ]]; then echo_ok else echo_failed fi echo "" exit 0