#!/bin/bash ######################################################################### # Script for global backup main folders of ARM devices # # Created by PM-DoIT # # ver 0.2 # ######################################################################### #----------------------------- VARIABLES -------------------------------# CAT="HTSNMC02|HTSNMC03|HTSCONPI|propiv1|thcpiv2" DAY="30" DAT=$(date +%y%m%d) SRV=/etc/hosts TMP=/tmp/hosts BCK=/opt/backup clear #---------------------------- CREDENTIALS ------------------------------# source /root/.credentials #---------------------------- CHECK-PING -------------------------------# checkping(){ test -f $TMP && rm -rf $TMP cat $SRV | awk '{print $2}' | egrep "$CAT" | grep "$READSITE" | sort | uniq | while read output do ping -c 1 "$output" > /dev/null if [ $? -eq 0 ]; then echo "$output" >> $TMP else echo -e "- $output is \e[1;31mDOWN\e[0m" fi done test -f $TMP || echo -e "! Devices \e[1;31mNOT\e[0m exist in LIST definition" test -f $TMP || exit 1 } #---------------------------- CHECK-CRED -------------------------------# checkcred(){ echo -e "Starting \e[1;32mcheck\e[0m [\e[1;37mlogin\e[0m] to devices:" for i in `cat $TMP` do status=$(sshpass -p $password timeout 10 ssh -o "UserKnownHostsFile=/dev/null" -o StrictHostKeyChecking=no -o ConnectTimeout=5 $localuser@${i} 2> /dev/null || echo NO) if [[ "$status" == "NO" ]]; then echo -e "* \e[1;32m$i\e[0m auth \e[1;31mFAIL\e[0m" sed -i "/$i/d" $TMP else echo -e "* \e[1;32m$i\e[0m auth \e[1;32mOK\e[0m" fi done } #------------------------------ BACKUP ---------------------------------# backup(){ test -d $BCK || mkdir $BCK echo -e "Starting \e[1;32mbackup\e[0m [\e[1;33mmain\e[0m] folders:" for i in `cat $TMP` do echo -e "- \e[1;32m$i\e[0m start backup [\e[1;33metc\e[0m]" sshpass -p $password ssh -o "UserKnownHostsFile=/dev/null" -o StrictHostKeyChecking=no $localuser@${i} 2> /dev/null "sudo -S tar cf /opt/etc.tar /etc > /dev/null 2>&1" echo -e "- \e[1;32m$i\e[0m download backup [\e[1;33metc\e[0m]" sshpass -p $password scp -r -o "UserKnownHostsFile=/dev/null" -o StrictHostKeyChecking=no -o LogLevel=quiet $localuser@${i}:/opt/etc.tar /opt/backup/${i}_etc_$DAT.tar > /dev/null 2>&1 echo -e "- \e[1;32m$i\e[0m start backup [\e[1;34mhome\e[0m]" sshpass -p $password ssh -o "UserKnownHostsFile=/dev/null" -o StrictHostKeyChecking=no $localuser@${i} 2> /dev/null "sudo -S cp /var/spool/cron/crontabs/root /home/crontab" sshpass -p $password ssh -o "UserKnownHostsFile=/dev/null" -o StrictHostKeyChecking=no $localuser@${i} 2> /dev/null "sudo -S tar cf /opt/home.tar /home > /dev/null 2>&1" echo -e "- \e[1;32m$i\e[0m download backup [\e[1;34mhome\e[0m]" sshpass -p $password scp -r -o "UserKnownHostsFile=/dev/null" -o StrictHostKeyChecking=no -o LogLevel=quiet $localuser@${i}:/opt/home.tar /opt/backup/${i}_home_$DAT.tar > /dev/null 2>&1 echo -e "- \e[1;32m$i\e[0m start backup [\e[1;35mwww\e[0m]" sshpass -p $password ssh -o "UserKnownHostsFile=/dev/null" -o StrictHostKeyChecking=no $localuser@${i} 2> /dev/null "test -d /var/www && sudo -S tar cf /opt/www.tar /var/www > /dev/null 2>&1" echo -e "- \e[1;32m$i\e[0m download backup [\e[1;35mwww\e[0m]" sshpass -p $password scp -r -o "UserKnownHostsFile=/dev/null" -o StrictHostKeyChecking=no -o LogLevel=quiet $localuser@${i}:/opt/www.tar /opt/backup/${i}_www_$DAT.tar > /dev/null 2>&1 done } #------------------------------ BACKUP ---------------------------------# status(){ SZ=$(du -h -d1 /opt/ | grep backup | awk '{print $1}') echo -e "- Starting \e[1;32mremove\e[0m [\e[1;33m$DAY\e[0m] old days backups" find $BCK/* -mtime +$DAY -exec rm {} \; echo -e "- Backups saved to [\e[1;36m/opt/backup\e[0m] size [\e[1;33m$SZ\e[0m]" } #------------------------------- CORE ----------------------------------# checkping checkcred backup status