| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #!/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
|