v-add-backup-ftp-host 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/bin/bash
  2. # info: add backup ftp host
  3. # options: HOST USERNAME PASSWORD [PATH] [PORT]
  4. #
  5. # The function adds ftp host for system backups
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument defenition
  10. host=$1
  11. ftp_user=$2
  12. ftp_password=$3
  13. ftp_path=${4-/backup}
  14. ftp_port=${5-21}
  15. A3='******'
  16. # Includes
  17. source $VESTA/conf/vesta.conf
  18. source $VESTA/func/main.sh
  19. # Defining ftp command function
  20. ftpc() {
  21. ftp -n $host $ftp_port <<EOF
  22. quote USER $ftp_user
  23. quote PASS $ftp_password
  24. binary
  25. $1
  26. $2
  27. $3
  28. quit
  29. EOF
  30. }
  31. #----------------------------------------------------------#
  32. # Verifications #
  33. #----------------------------------------------------------#
  34. check_args '3' "$#" "HOST USERNAME PASSWORD [PATH] [PORT]"
  35. validate_format 'host' 'ftp_user' 'ftp_password'
  36. #----------------------------------------------------------#
  37. # Action #
  38. #----------------------------------------------------------#
  39. # Checking network connection
  40. if [ ! -z "$(ftpc)" ]; then
  41. echo "Error: can't login to ftp"
  42. log_event "$E_FTP" "$EVENT"
  43. exit $E_FTP
  44. fi
  45. # Checking write permissions
  46. ftpc "mkdir $ftp_path" > /dev/null 2>&1
  47. ftmpdir=$(mktemp -u -p "$ftp_path")
  48. ftp_result=$(ftpc "mkdir $ftmpdir" "rm $ftmpdir")
  49. if [ ! -z "$ftp_result" ] ; then
  50. rm -rf $tmpdir
  51. echo "Error: can't create temp folder on the ftp"
  52. log_event "$E_FTP" "$EVENT"
  53. exit $E_FTP
  54. fi
  55. # Adding backup host
  56. echo "HOST='$host'
  57. USERNAME='$ftp_user'
  58. PASSWORD='$ftp_password'
  59. BPATH='$ftp_path'
  60. PORT='$ftp_port'
  61. TIME='$TIME'
  62. DATE='$DATE'" > $VESTA/conf/ftp.backup.conf
  63. chmod 660 $VESTA/conf/ftp.backup.conf
  64. #----------------------------------------------------------#
  65. # Vesta #
  66. #----------------------------------------------------------#
  67. # Update vesta.conf
  68. if [ -z "$(grep LANGUAGE $VESTA/conf/vesta.conf)" ]; then
  69. echo "BACKUP_SYSTEM='ftp'" >> $VESTA/conf/vesta.conf
  70. else
  71. bckp=$(echo "$BACKUP_SYSTEM,ftp" |\
  72. sed -e "s/,/\n/g"|\
  73. sort -r -u |\
  74. sed -e "/^$/d"|\
  75. sed -e ':a;N;$!ba;s/\n/,/g')
  76. sed -i "s/BACKUP_SYSTEM=.*/BACKUP_SYSTEM='$bckp'/g" $VESTA/conf/vesta.conf
  77. fi
  78. # Logging
  79. log_event "$OK" "$EVENT"
  80. exit