gbackup.sh 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/bin/bash
  2. #########################################################################
  3. # Script for global backup main folders of ARM devices #
  4. # Created by PM-DoIT #
  5. # ver 0.2 #
  6. #########################################################################
  7. #----------------------------- VARIABLES -------------------------------#
  8. CAT="HTSNMC02|HTSNMC03|HTSCONPI|propiv1|thcpiv2"
  9. DAY="30"
  10. DAT=$(date +%y%m%d)
  11. SRV=/etc/hosts
  12. TMP=/tmp/hosts
  13. BCK=/opt/backup
  14. clear
  15. #---------------------------- CREDENTIALS ------------------------------#
  16. source /root/.credentials
  17. #---------------------------- CHECK-PING -------------------------------#
  18. checkping(){
  19. test -f $TMP && rm -rf $TMP
  20. cat $SRV | awk '{print $2}' | egrep "$CAT" | grep "$READSITE" | sort | uniq | while read output
  21. do
  22. ping -c 1 "$output" > /dev/null
  23. if [ $? -eq 0 ]; then
  24. echo "$output" >> $TMP
  25. else
  26. echo -e "- $output is \e[1;31mDOWN\e[0m"
  27. fi
  28. done
  29. test -f $TMP || echo -e "! Devices \e[1;31mNOT\e[0m exist in LIST definition"
  30. test -f $TMP || exit 1
  31. }
  32. #---------------------------- CHECK-CRED -------------------------------#
  33. checkcred(){
  34. echo -e "Starting \e[1;32mcheck\e[0m [\e[1;37mlogin\e[0m] to devices:"
  35. for i in `cat $TMP`
  36. do
  37. status=$(sshpass -p $password timeout 10 ssh -o "UserKnownHostsFile=/dev/null" -o StrictHostKeyChecking=no -o ConnectTimeout=5 $localuser@${i} 2> /dev/null || echo NO)
  38. if [[ "$status" == "NO" ]]; then
  39. echo -e "* \e[1;32m$i\e[0m auth \e[1;31mFAIL\e[0m"
  40. sed -i "/$i/d" $TMP
  41. else
  42. echo -e "* \e[1;32m$i\e[0m auth \e[1;32mOK\e[0m"
  43. fi
  44. done
  45. }
  46. #------------------------------ BACKUP ---------------------------------#
  47. backup(){
  48. test -d $BCK || mkdir $BCK
  49. echo -e "Starting \e[1;32mbackup\e[0m [\e[1;33mmain\e[0m] folders:"
  50. for i in `cat $TMP`
  51. do
  52. echo -e "- \e[1;32m$i\e[0m start backup [\e[1;33metc\e[0m]"
  53. 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"
  54. echo -e "- \e[1;32m$i\e[0m download backup [\e[1;33metc\e[0m]"
  55. 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
  56. echo -e "- \e[1;32m$i\e[0m start backup [\e[1;34mhome\e[0m]"
  57. 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"
  58. 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"
  59. echo -e "- \e[1;32m$i\e[0m download backup [\e[1;34mhome\e[0m]"
  60. 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
  61. echo -e "- \e[1;32m$i\e[0m start backup [\e[1;35mwww\e[0m]"
  62. 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"
  63. echo -e "- \e[1;32m$i\e[0m download backup [\e[1;35mwww\e[0m]"
  64. 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
  65. done
  66. }
  67. #------------------------------ BACKUP ---------------------------------#
  68. status(){
  69. SZ=$(du -h -d1 /opt/ | grep backup | awk '{print $1}')
  70. echo -e "- Starting \e[1;32mremove\e[0m [\e[1;33m$DAY\e[0m] old days backups"
  71. find $BCK/* -mtime +$DAY -exec rm {} \;
  72. echo -e "- Backups saved to [\e[1;36m/opt/backup\e[0m] size [\e[1;33m$SZ\e[0m]"
  73. }
  74. #------------------------------- CORE ----------------------------------#
  75. checkping
  76. checkcred
  77. backup
  78. status