From 01e7105d45f448f2d464e4ff0639e57ba657c513 Mon Sep 17 00:00:00 2001 From: Valery Barsukov Date: Wed, 14 Jul 2021 14:42:23 +0300 Subject: [PATCH] Add email + fix --- README.md | 1 + selectel-balance.sh | 41 ++++++++++++++++++++++++++++++++--------- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index d84b3ba..0e773f3 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Bash-скрипт мониторинга основного баланса в Se - доступ в Интернет - наличие ключа API (https://my.selectel.ru/profile/apikeys) в действующем аккаунте Selectel - заполненные переменные в .env +- настроенный почтовый клиент mutt ## Использование Заполнить .env и выполнять с необходимой периодичностью. diff --git a/selectel-balance.sh b/selectel-balance.sh index a58b3b2..2b2170b 100755 --- a/selectel-balance.sh +++ b/selectel-balance.sh @@ -1,10 +1,23 @@ #!/bin/bash set -eu +export PATH="/usr/local/bin:/usr/bin:/bin" +MUTT=$(which mutt) +SCRIPT=$(readlink -e $0) +SCRIPT_PATH="$(dirname ${SCRIPT})" +echo "SCRIPT_PATH=${SCRIPT_PATH}" +cd ${SCRIPT_PATH} + +# Проверка наличия почтового клиента mutt +if [[ -z "${MUTT}" ]]; then + echo "Ошибка - почтовый клиент mutt не найден." + exit 1 +fi + # Проверка наличия файла с переменными .env if [[ ! -f ".env" ]]; then echo "Ошибка - отсутствует файл с переменными .env" - exit 1 + exit 2 fi # Входные переменные берём из .env @@ -12,28 +25,36 @@ source .env # Проверка заполнения переменной SELECTEL_API_KEY if [[ -z "${SELECTEL_API_KEY}" ]]; then - echo "Ошибка - пустой SELECTEL_API_KEY (${SELECTEL_API_KEY})" - exit 2 + echo "Ошибка - пустая пременная SELECTEL_API_KEY" + exit 3 #else # echo "SELECTEL_API_KEY=${SELECTEL_API_KEY}" fi # Проверка заполнения переменной MIN_BALANCE if [[ -z "${MIN_BALANCE}" ]]; then - echo "Ошибка - пустой MIN_BALANCE (${MIN_BALANCE})" - exit 3 + echo "Ошибка - пустая пременная MIN_BALANCE" + exit 4 #else # echo "MIN_BALANCE=${MIN_BALANCE}" fi +# Проверка заполнения переменной EMAIL_FOR_NOTIFICATION +if [[ -z "${EMAIL_FOR_NOTIFICATION}" ]]; then + echo "Ошибка - пустая пременная EMAIL_FOR_NOTIFICATION" + exit 5 +#else +# echo "EMAIL_FOR_NOTIFICATION=${EMAIL_FOR_NOTIFICATION}" +fi + # Получаем баланс ANSWER=$(curl -s -H "X-token: ${SELECTEL_API_KEY}" -H "Content-Type: application/json" https://my.selectel.ru/api/v3/billing/balance) #echo "ANSWER=${ANSWER}" # Проверяем прошла ли авторизация if [[ ! -z $(echo ${ANSWER} | grep "401 Authorization Required") ]]; then - echo "Ошибка - не пройдена авторизация на SELECTEL (${ANSWER})" - exit 4 + echo "Ошибка - не пройдена авторизация на SELECTEL:/n${ANSWER}" + exit 6 else BALANCE=$(echo ${ANSWER} | jq '.data.primary.main') # echo "BALANCE=${BALANCE}" @@ -41,8 +62,8 @@ fi # Проверка заполнения переменной BALANCE if [[ -z "${BALANCE}" ]]; then - echo "Ошибка - не получен BALANCE (${BALANCE})" - exit 4 + echo "Ошибка - не получен BALANCE" + exit 7 #else # echo "BALANCE=${BALANCE}" fi @@ -54,6 +75,8 @@ MIN_BALANCE_RUB=$(echo ${MIN_BALANCE} | rev); MIN_BALANCE_RUB=${MIN_BALANCE_RUB: # Сравниваем BALANCE с MIN_BALANCE if [[ "${BALANCE}" -le "${MIN_BALANCE}" ]]; then echo "Баланс на Selectel нужно пополнить (${BALANCE_RUB} руб. < ${MIN_BALANCE_RUB} руб.)" + # Отправляем уведомление на e-mail + echo "Баланс на Selectel нужно пополнить (${BALANCE_RUB} руб. < ${MIN_BALANCE_RUB} руб.)" | mutt -s "Баланс на Selectel нужно пополнить (< ${MIN_BALANCE_RUB} руб.)" $EMAIL_FOR_NOTIFICATION else echo "Баланс на Selectel достаточен (${BALANCE_RUB} руб. > ${MIN_BALANCE_RUB} руб.)" fi