From 16d09fb42a6dfc2046fe0676ade6e2469146d2fa Mon Sep 17 00:00:00 2001 From: root Date: Sat, 25 Feb 2017 05:08:48 +0100 Subject: [PATCH] Change output, improve error handling. --- change_network_gateway.sh | 212 ++++++++++++++++++++++++-------------- 1 file changed, 137 insertions(+), 75 deletions(-) diff --git a/change_network_gateway.sh b/change_network_gateway.sh index 2a09781..8cd43b8 100755 --- a/change_network_gateway.sh +++ b/change_network_gateway.sh @@ -4,6 +4,8 @@ base_dir=/root/Office_Networks chown -R root:root $base_dir +logfile=$(mktemp) + function usage() { if [ -n "$1" ];then echo -e "\nError: $1" @@ -55,10 +57,43 @@ Notice: remountro EOF + +rm -rf $logfile exit } +error(){ + echo "" + if $terminal ; then + echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*" + else + echo "Error: $*" + fi + echo "" +} + +warn (){ + echo "" + if $terminal ; then + echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*" + else + echo "Warning: $*" + fi + echo "" +} + +info (){ + echo "" + if $terminal ; then + echo -e "\t[ \033[32m\033[1mInfo\033[m ]: $*" + else + echo "Info: $*" + fi + echo "" +} + + echo_OK() { echo -en "\\033[45G[ \\033[1;32mOK\\033[0;39m ]\n" } @@ -68,7 +103,7 @@ echo_FAILED() { } echo_SKIPPED() { - echo -en "\\033[45G[ \\033[1;37mFAIL\\033[0;39m ]\n" + echo -en "\\033[45G[ \\033[37mSkipped\\033[0;39m ]\n" } [ $# -ne "1" ] && usage "wrong number of arguments" @@ -96,6 +131,7 @@ case $1 in esac echo "" echo "Configure gateway for network \"$network\".." +echo "" # - Nameserver Bind # - /etc/bind/* @@ -129,9 +165,10 @@ if [[ -d "/etc/openvpn" ]]; then echo -en "\tVPN settings.." /etc/init.d/openvpn stop > /dev/null rm -rf /etc/openvpn - cp -a ${base_dir}/${network}/openvpn /etc/openvpn + cp -a ${base_dir}/${network}/openvpn /etc/openvpn > $logfile 2>&1 if [ "$?" != "0" ]; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -139,9 +176,10 @@ fi if [ -d "/root/.openvpn" ]; then echo -en "\tCleanup private VPN settings for user root.." - rm -rf /root/.openvpn + rm -r /root/.openvpn > $logfile 2>&1 if [ "$?" != "0" ]; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -149,9 +187,10 @@ fi if [ -d "${base_dir}/${network}/.openvpn" ];then echo -en "\tPrivate VPN settings for root user.." - cp -a ${base_dir}/${network}/.openvpn /root/.openvpn + cp -a ${base_dir}/${network}/.openvpn /root/.openvpn > $logfile 2>&1 if [ "$?" != "0" ]; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -168,9 +207,10 @@ fi # - /etc/ddclient.conf if [ -f ${base_dir}/${network}/ddclient.conf.${network} ];then echo -en "\tConfigure DynDNS.." - cp -a ${base_dir}/${network}/ddclient.conf.${network} /etc/ddclient.conf + cp -a ${base_dir}/${network}/ddclient.conf.${network} /etc/ddclient.conf > $logfile 2>&1 if [ "$?" != "0" ]; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -191,14 +231,14 @@ for file in $files ; do file_real_name="${file%.*}" if [[ -f "${base_dir}/${network}/$file" ]]; then if [[ -d /etc/dhcp ]]; then - cp -a ${base_dir}/${network}/$file /etc/dhcp/ + cp -a ${base_dir}/${network}/$file /etc/dhcp/ > $logfile 2>&1 if [[ "$?" = "0" ]]; then success=true else failed=true fi elif [[ -d /etc/dhcp3 ]] ;then - cp -a ${base_dir}/${network}/$file /etc/dhcp3/ + cp -a ${base_dir}/${network}/$file /etc/dhcp3/ > $logfile 2>&1 if [[ "$?" = "0" ]]; then success=true else @@ -209,6 +249,7 @@ for file in $files ; do done if $failed ; then echo_FAILED + error $(cat $logfile) elif $success ; then echo_OK else @@ -235,7 +276,7 @@ echo -en "\tDSL settings.." if [[ -d "/etc/ppp/peers" ]]; then if [[ -d "{base_dir}/${network}/peers" ]]; then - cp -a ${base_dir}/${network}/peers/* /etc/ppp/peers/ + cp -a ${base_dir}/${network}/peers/* /etc/ppp/peers/ > $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi @@ -243,21 +284,22 @@ if [[ -d "/etc/ppp/peers" ]]; then fi if [[ -f "{base_dir}/${network}/email_notice.${network}" ]] ; then - cp -a ${base_dir}/${network}/email_notice.${network} /etc/ppp/ip-up.d/email_notice + cp -a ${base_dir}/${network}/email_notice.${network} /etc/ppp/ip-up.d/email_notice >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi fi -cp -a ${base_dir}/${network}/pap-secrets.${network} /etc/ppp/pap-secrets +cp -a ${base_dir}/${network}/pap-secrets.${network} /etc/ppp/pap-secrets >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi -cp -a ${base_dir}/${network}/chap-secrets.${network} /etc/ppp/chap-secrets +cp -a ${base_dir}/${network}/chap-secrets.${network} /etc/ppp/chap-secrets >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi if ! $_rval ; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -271,33 +313,34 @@ fi echo -en "\tConfigure Postfix SMTP Server.." _rval=true /etc/init.d/postfix stop > /dev/null -cp -a ${base_dir}/${network}/main.cf.${network} /etc/postfix/main.cf +cp -a ${base_dir}/${network}/main.cf.${network} /etc/postfix/main.cf > $logfile 2>&1 if [ -f ${base_dir}/${network}/generic.${network} ]; then - cp -a ${base_dir}/${network}/generic.${network} /etc/postfix/generic + cp -a ${base_dir}/${network}/generic.${network} /etc/postfix/generic >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi - cp -a ${base_dir}/${network}/generic.db.${network} /etc/postfix/generic.db + cp -a ${base_dir}/${network}/generic.db.${network} /etc/postfix/generic.db >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi fi if [ -f ${base_dir}/${network}/sasl_passwd.${network} ]; then - cp -a ${base_dir}/${network}/sasl_passwd.${network} /etc/postfix/sasl_passwd + cp -a ${base_dir}/${network}/sasl_passwd.${network} /etc/postfix/sasl_passwd >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi - cp -a ${base_dir}/${network}/sasl_passwd.db.${network} /etc/postfix/sasl_passwd.db + cp -a ${base_dir}/${network}/sasl_passwd.db.${network} /etc/postfix/sasl_passwd.db >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi fi -cp -a ${base_dir}/${network}/mailname.${network} /etc/mailname +cp -a ${base_dir}/${network}/mailname.${network} /etc/mailname >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi if ! $_rval ; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -310,24 +353,25 @@ fi # - /etc/hosts echo -en "\tConfigure network settings.." _rval=true -cp -a ${base_dir}/${network}/interfaces.${network} /etc/network/interfaces +cp -a ${base_dir}/${network}/interfaces.${network} /etc/network/interfaces > $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi -cp -a ${base_dir}/${network}/resolv.conf.${network} /etc/resolv.conf +cp -a ${base_dir}/${network}/resolv.conf.${network} /etc/resolv.conf >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi -cp -a ${base_dir}/${network}/hosts.${network} /etc/hosts +cp -a ${base_dir}/${network}/hosts.${network} /etc/hosts >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi -cp -a ${base_dir}/${network}/hostname.${network} /etc/hostname +cp -a ${base_dir}/${network}/hostname.${network} /etc/hostname >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi if ! $_rval ; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -338,11 +382,12 @@ fi echo -en "\t/root/bin directory" if [[ -d "${base_dir}/${network}/bin" ]]; then if [[ ! -d "/root/bin" ]]; then - mkdir /root/bin + mkdir /root/bin > $logfile 2>&1 fi - cp -a ${base_dir}/${network}/bin/* /root/bin/ + cp -a ${base_dir}/${network}/bin/* /root/bin/ > $logfile 2>&1 if ! $_rval ; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -355,9 +400,10 @@ fi # - echo -en "\t/usr/local/src directory" if [[ -d "${base_dir}/${network}/src" ]]; then - cp -a ${base_dir}/${network}/src/* /usr/local/src/ + cp -a ${base_dir}/${network}/src/* /usr/local/src/ > $logfile 2>&1 if ! $_rval ; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -370,9 +416,10 @@ fi # - echo -en "\t/usr/local/sbin directory" if [[ -d "${base_dir}/${network}/sbin" ]]; then - cp -a ${base_dir}/${network}/sbin/* /usr/local/sbin/ + cp -a ${base_dir}/${network}/sbin/* /usr/local/sbin/ > $logfile 2>&1 if ! $_rval ; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -392,43 +439,41 @@ if [[ -d "${base_dir}/${network}/ipt-firewall" ]]; then rm -rf /etc/ipt-firewall fi mkdir -p /etc/ipt-firewall - cp -a ${base_dir}/${network}/ipt-firewall /etc/ + cp -a ${base_dir}/${network}/ipt-firewall /etc/ > $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi else if [[ -d "/etc/ipt-firewall" ]]; then - rm -rf /etc/ipt-firewall + rm -rf /etc/ipt-firewall >> $logfile 2>&1 fi fi if [ -f ${base_dir}/${network}/ipt-firewall.${network} ]; then - cp -a ${base_dir}/${network}/ipt-firewall.${network} /etc/init.d/ipt-firewall + cp -a ${base_dir}/${network}/ipt-firewall.${network} /etc/init.d/ipt-firewall >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi else - rm -f /etc/init.d/ipt-firewall + rm -f /etc/init.d/ipt-firewall >> $logfile 2>&1 fi if [ -f ${base_dir}/${network}/ip6t-firewall.${network} ]; then - cp -a ${base_dir}/${network}/ip6t-firewall.${network} /etc/init.d/ip6t-firewall + cp -a ${base_dir}/${network}/ip6t-firewall.${network} /etc/init.d/ip6t-firewall >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi else if [ -f "/etc/init.d/ip6t-firewall" ]; then - rm -f /etc/init.d/ip6t-firewall + rm -f /etc/init.d/ip6t-firewall >> $logfile 2>&1 fi fi if [ -f ${base_dir}/${network}/ip6t-firewall.${network} ]; then echo -en "\tFirewall IPv6.." - cp -a ${base_dir}/${network}/ip6t-firewall.${network} /etc/init.d/ip6t-firewall + cp -a ${base_dir}/${network}/ip6t-firewall.${network} /etc/init.d/ip6t-firewall >> $logfile 2>&1 if [ "$?" != "0" ]; then - echo_FAILED - else - echo_OK + _rval=false fi else if [ -f "/etc/init.d/ip6t-firewall" ]; then @@ -437,47 +482,48 @@ else fi if [[ -f "${base_dir}/${network}/ipt-firewall.service.${network}" ]]; then - cp ${base_dir}/${network}/ipt-firewall.service.${network} /etc/systemd/system/ipt-firewall.service + cp ${base_dir}/${network}/ipt-firewall.service.${network} /etc/systemd/system/ipt-firewall.service >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi - systemctl daemon-reload + systemctl daemon-reload >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi - systemctl enable ipt-firewall.service + systemctl enable ipt-firewall.service >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi else if [[ -f "/etc/systemd/system/ipt-firewall.service" ]]; then - systemctl disable ipt-firewall.service - rm /etc/systemd/system/ipt-firewall.service + systemctl disable ipt-firewall.service >> $logfile 2>&1 + rm /etc/systemd/system/ipt-firewall.service >> $logfile 2>&1 fi fi if [[ -f "${base_dir}/${network}/ip6t-firewall.service.${network}" ]]; then - cp ${base_dir}/${network}/ip6t-firewall.service.${network} /etc/systemd/system/ip6t-firewall.service + cp ${base_dir}/${network}/ip6t-firewall.service.${network} /etc/systemd/system/ip6t-firewall.service >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi - systemctl daemon-reload + systemctl daemon-reload >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi - systemctl enable ip6t-firewall.service + systemctl enable ip6t-firewall.service >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi else if [[ -f "/etc/systemd/system/ip6t-firewall.service" ]]; then - systemctl disable ip6t-firewall.service - rm /etc/systemd/system/ip6t-firewall.service + systemctl disable ip6t-firewall.service >> $logfile 2>&1 + rm /etc/systemd/system/ip6t-firewall.service >> $logfile 2>&1 fi fi if ! $_rval ; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -491,50 +537,51 @@ _rval=true if [[ -d "${base_dir}/${network}/check_net" ]]; then if [[ -d "/etceck_net" ]]; then - rm -rf /etc/check_net + rm -rf /etc/check_net > $logfile 2>&1 fi mkdir -p /etc/check_net - cp -a ${base_dir}/${network}/check_net /etc/ + cp -a ${base_dir}/${network}/check_net /etc/ >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi else if [[ -d "/etc/check_net" ]]; then - rm -rf /etc/check_net + rm -rf /etc/check_net >> $logfile 2>&1 fi fi if [ -f ${base_dir}/${network}/check_net.service.${_network} ] ; then - cp -a ${base_dir}/${network}/check_net.service.${_network} /etc/systemd/system/check_net.service + cp -a ${base_dir}/${network}/check_net.service.${_network} /etc/systemd/system/check_net.service >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi - systemctl daemon-reload - systemctl enable check_net.service + systemctl daemon-reload >> $logfile 2>&1 + systemctl enable check_net.service >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi else if [[ -f "/etc/systemd/system/check_net.service" ]]; then - systemctl disable check_net.service - rm /etc/systemd/system/check_net.service + systemctl disable check_net.service >> $logfile 2>&1 + rm /etc/systemd/system/check_net.service >> $logfile 2>&1 systemctl daemon-reload fi fi if [[ -f "${base_dir}/${network}/check_net-logrotate.${_network}" ]]; then - cp -a ${base_dir}/${network}/check_net-logrotate.${_network} /etc/logrotated.d/check_net + cp -a ${base_dir}/${network}/check_net-logrotate.${_network} /etc/logrotated.d/check_net >> $logfile 2>&1 if [ "$?" != "0" ]; then _rval=false fi else if [[ -f "/etc/logrotated.d/check_net" ]]; then - rm /etc/logrotated.d/check_net + rm /etc/logrotated.d/check_net >> $logfile 2>&1 fi fi if ! $_rval ; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -547,9 +594,10 @@ if [ -f ${base_dir}/${network}/igmpproxy.conf.${network} ];then echo -en "\tConfigure igmproxy (Entertain TV).." PID=`ps aux | grep "/igmpproxy " | grep -v grep | awk '{print$2}'` kill -9 $PID > /dev/null 2>&1 - cp -a ${base_dir}/${network}/igmpproxy.conf.${network} /usr/local/igmpproxy/etc/igmpproxy.conf + cp -a ${base_dir}/${network}/igmpproxy.conf.${network} /usr/local/igmpproxy/etc/igmpproxy.conf > $logfile 2>&1 if [ "$?" != "0" ]; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -557,18 +605,20 @@ fi if [ -f ${base_dir}/${network}/aiccu.conf.${network} ]; then echo -en "\tConfigure aiccu (IPv6 Tunnel).." - cp -a ${base_dir}/${network}/aiccu.conf.${network} /etc/aiccu.conf + cp -a ${base_dir}/${network}/aiccu.conf.${network} /etc/aiccu.conf > $logfile 2>&1 if [ "$?" != "0" ]; then echo_FAILED + error $(cat $logfile) else echo_OK fi fi if [ -f ${base_dir}/${network}/aiccu.${network} ]; then echo -en "\tSetting /etc/defaults/aiccu.." - cp -a ${base_dir}/${network}/aiccu.${network} /etc/default/aiccu + cp -a ${base_dir}/${network}/aiccu.${network} /etc/default/aiccu > $logfile 2>&1 if [ "$?" != "0" ]; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -576,9 +626,10 @@ fi if [ -f ${base_dir}/${network}/radvd.conf.${network} ]; then echo -en "\tConfigure radvd (Router Advertisment Daemon).." - cp -a ${base_dir}/${network}/radvd.conf.${network} /etc/radvd.conf + cp -a ${base_dir}/${network}/radvd.conf.${network} /etc/radvd.conf > $logfile 2>&1 if [ "$?" != "0" ]; then echo_FAILED + error $(cat $logfile) else echo_OK fi @@ -614,45 +665,56 @@ fi ## - Cron (root) ## - echo -en "\tSetting up cronjobs.." -if [ "$network" = "NONE-CKUBU" -o "$network" = "NONE-WF" ];then - cp -a ${base_dir}/crontab_root.NONE /var/spool/cron/crontabs/root +if [ "$network" = "NONE-CKUBU" -o "$network" = "NONE-WF" -o "$network" = "GA-Ersatz" ];then + cp -a ${base_dir}/crontab_root.NONE /var/spool/cron/crontabs/root > $logfile 2>&1 else if [ -f ${base_dir}/${network}/cron_root.${network} ];then - cp -a ${base_dir}/${network}/cron_root.${network} /var/spool/cron/crontabs/root + cp -a ${base_dir}/${network}/cron_root.${network} /var/spool/cron/crontabs/root > $logfile 2>&1 fi fi if [ "$?" != "0" ]; then echo_FAILED + error $(cat $logfile) else echo_OK fi echo -en "\tSetting up rc.local.." if [ "$network" = "NONE-CKUBU" -o "$network" = "NONE-WF" -o "$network" = "GA-Ersatz" ];then - cp -a ${base_dir}/rc.local.NONE /etc/rc.local + cp -a ${base_dir}/rc.local.NONE /etc/rc.local > $logfile 2>&1 else #cp -a ${base_dir}/rc.local /etc/rc.local - cp -a ${base_dir}/${network}/rc.local.${network} /etc/rc.local + cp -a ${base_dir}/${network}/rc.local.${network} /etc/rc.local > $logfile 2>&1 fi if [ "$?" != "0" ]; then - echo_FAILED + echo_FAILED + error $(cat $logfile) else echo_OK fi -echo "" -echo "" -echo -e " \\033[1;31m Take care, you are chrooted into /ro. Otherwise" -echo -e " changes are not persistent \\033[0;39m !!" -echo "" -echo "" if $_add_support_if ; then echo -e " After restarting, you can reach that device" echo -e " at ip-address: \\033[1;33m172.16.1.1\\033[0;39m" fi -echo "" -echo "" -echo -e " \\033[1;33mExit from chroot environment and restart to make changes active..\\033[0;39m" -echo "" + +if [ "$(stat -c %d:%i /)" = "$(stat -c %d:%i /proc/1/root/.)" ]; then + + warn "This is NOT a chrooted environment. Maybe thats ok. \n\n\t\033[1;37mIf this is a readonly system, take care, you are chrooted into /ro.\n\tOtherwise changes are not persistent.\033[m" + + #echo "" + #echo "" + #echo -e " \\033[1;31m Take care, you are chrooted into /ro. Otherwise" + #echo -e " changes are not persistent \\033[0;39m !!" + #echo "" + #echo "" +else + info "Programm was running in a chrooted environment.\n\n\t\033[1;37mExit from chroot environment and restart to make changes active..\033[m" + + #echo "" + #echo "" + #echo -e " \\033[1;33mExit from chroot environment and restart to make changes active..\\033[0;39m" + #echo "" +fi exit 0