remote.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. send_api_cmd() {
  2. answer=$(curl -s -k \
  3. --data-urlencode "user=$USER" \
  4. --data-urlencode "password=$PASSWORD" \
  5. --data-urlencode "returncode=yes" \
  6. --data-urlencode "cmd=$1" \
  7. --data-urlencode "arg1=$2" \
  8. --data-urlencode "arg2=$3" \
  9. --data-urlencode "arg3=$4" \
  10. --data-urlencode "arg4=$5" \
  11. --data-urlencode "arg5=$6" \
  12. --data-urlencode "arg6=$7" \
  13. --data-urlencode "arg7=$8" \
  14. --data-urlencode "arg8=$9" \
  15. https://$HOST:$PORT/api/)
  16. return $answer
  17. }
  18. send_api_file() {
  19. answer=$(curl -s -k \
  20. --data-urlencode "user=$USER" \
  21. --data-urlencode "password=$PASSWORD" \
  22. --data-urlencode "returncode=yes" \
  23. --data-urlencode "cmd=v-make-tmp-file" \
  24. --data-urlencode "arg1=$(cat $1)" \
  25. --data-urlencode "arg2=$2" \
  26. https://$HOST:$PORT/api/)
  27. return $answer
  28. }
  29. send_ssh_cmd() {
  30. if [ -z "$IDENTITY_FILE" ] && [ "$USER" = 'root' ]; then
  31. IDENTITY_FILE="/root/.ssh/id_rsa"
  32. fi
  33. if [ -z "$IDENTITY_FILE" ]; then
  34. IDENTITY_FILE="/home/$USER/.ssh/id_rsa"
  35. fi
  36. if [ "$USER" = 'root' ]; then
  37. args="$VESTA/bin/$1 \"$2\" \"$3\" \"$4\" \"$5\""
  38. else
  39. args="sudo $VESTA/bin/$1 \"$2\" \"$3\" \"$4\" \"$5\""
  40. fi
  41. ssh -i $IDENTITY_FILE $USER@$HOST -p $PORT "$args" > /dev/null 2>&1
  42. if [ "$?" -ne '0' ]; then
  43. return 1
  44. else
  45. return 0
  46. fi
  47. }
  48. send_scp_file() {
  49. if [ -z "$IDENTITY_FILE" ]; then
  50. IDENTITY_FILE="/home/admin/.ssh/id_rsa"
  51. fi
  52. scp -P $PORT -i $IDENTITY_FILE $1 $USER@$HOST:$2 > /dev/null 2>&1
  53. if [ "$?" -ne '0' ]; then
  54. return 1
  55. else
  56. return 0
  57. fi
  58. }
  59. is_dnshost_new() {
  60. if [ -e "$VESTA/conf/dns-cluster.conf" ]; then
  61. check_host=$(grep "HOST='$host'" $VESTA/conf/dns-cluster.conf)
  62. if [ ! -z "$check_host" ]; then
  63. check_result $E_EXISTS "remote dns host $host exists"
  64. fi
  65. fi
  66. }
  67. is_dnshost_alive() {
  68. cluster_cmd v-list-sys-config
  69. check_result $? "$type connection to $HOST failed" $E_CONNECT
  70. cluster_cmd v-list-user $DNS_USER
  71. check_result $? "$DNS_USER doesn't exist" $E_CONNECT
  72. }
  73. remote_dns_health_check() {
  74. OLD_IFS="$IFS"
  75. IFS=$'\n'
  76. # Starting health-check
  77. for str in $(grep "SUSPENDED='no'" $VESTA/conf/dns-cluster.conf); do
  78. eval $str
  79. # Checking host connection
  80. cluster_cmd v-list-user $DNS_USER
  81. if [ $? -ne 0 ]; then
  82. # Creating error report
  83. tmpfile=$(mktemp)
  84. echo "$(basename $0) $*" > $tmpfile
  85. echo -e "Error: $TYPE connection to $HOST failed.\n" >> $tmpfile
  86. echo -n "Remote dns host has been suspended." >> $tmpfile
  87. echo -n "After resolving issue run " >> $tmpfile
  88. echo -e "following commands:\n" >> $tmpfile
  89. echo "v-unsuspend-remote-dns-host $HOST" >> $tmpfile
  90. echo "v-sync-dns-cluster $HOST" >> $tmpfile
  91. echo -e "\n\n--\nVesta Control Panel\n$(hostname)" >> $tmpfile
  92. if [ "$1" = 'no_email' ]; then
  93. cat $tmpfile
  94. else
  95. subj="DNS sync failed"
  96. email=$($BIN/v-get-user-value admin CONTACT)
  97. cat $tmpfile |$send_mail -s "$subj" $email
  98. fi
  99. # Deleting tmp file
  100. rm -f $tmpfile
  101. log_event "$E_CONNECT" "$EVENT"
  102. # Suspending remote host
  103. dconf="../../conf/dns-cluster"
  104. update_object_value "$dconf" 'HOST' "$HOST" '$SUSPENDED' 'yes'
  105. fi
  106. done
  107. IFS="$OLD_IFS"
  108. }
  109. cluster_cmd() {
  110. case $TYPE in
  111. ssh) send_ssh_cmd $* ;;
  112. api) send_api_cmd $* ;;
  113. esac
  114. }
  115. cluster_file() {
  116. case $TYPE in
  117. ssh) send_scp_file $* ;;
  118. api) send_api_file $* ;;
  119. esac
  120. }