From 6c2471b6da4d83edac93d51e4da5fb3743c675d7 Mon Sep 17 00:00:00 2001 From: Valery Barsukov Date: Wed, 14 Jul 2021 13:16:49 +0300 Subject: [PATCH] Initial commit --- .env | 8 ++++++ README.md | 12 +++++++++ selectel-balance.sh | 62 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 .env create mode 100644 README.md create mode 100755 selectel-balance.sh diff --git a/.env b/.env new file mode 100644 index 0000000..fc9acbb --- /dev/null +++ b/.env @@ -0,0 +1,8 @@ +# Selectel API key +SELECTEL_API_KEY="Example API key" + +# Минимально допустимый баланс (в копейках) +MIN_BALANCE="3000000" + +# E-mail для уведомлений о снижении баланса ниже минимального +EMAIL_FOR_NOTIFICATION="email@example.com" diff --git a/README.md b/README.md new file mode 100644 index 0000000..dcb1469 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# SELECTEL-BALANCE +Скрипт мониторинга баланса в Selectel + +## Требования +- доступ в Интернет +- наличие ключа API (https://my.selectel.ru/profile/apikeys) в действующем аккаунте Selectel +- заполненные переменные в .env + +## Использование +Заполнить .env и выполнять периодически + +./selectel-balance.sh diff --git a/selectel-balance.sh b/selectel-balance.sh new file mode 100755 index 0000000..a58b3b2 --- /dev/null +++ b/selectel-balance.sh @@ -0,0 +1,62 @@ +#!/bin/bash +set -eu + +# Проверка наличия файла с переменными .env +if [[ ! -f ".env" ]]; then + echo "Ошибка - отсутствует файл с переменными .env" + exit 1 +fi + +# Входные переменные берём из .env +source .env + +# Проверка заполнения переменной SELECTEL_API_KEY +if [[ -z "${SELECTEL_API_KEY}" ]]; then + echo "Ошибка - пустой SELECTEL_API_KEY (${SELECTEL_API_KEY})" + exit 2 +#else +# echo "SELECTEL_API_KEY=${SELECTEL_API_KEY}" +fi + +# Проверка заполнения переменной MIN_BALANCE +if [[ -z "${MIN_BALANCE}" ]]; then + echo "Ошибка - пустой MIN_BALANCE (${MIN_BALANCE})" + exit 3 +#else +# echo "MIN_BALANCE=${MIN_BALANCE}" +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 +else + BALANCE=$(echo ${ANSWER} | jq '.data.primary.main') +# echo "BALANCE=${BALANCE}" +fi + +# Проверка заполнения переменной BALANCE +if [[ -z "${BALANCE}" ]]; then + echo "Ошибка - не получен BALANCE (${BALANCE})" + exit 4 +#else +# echo "BALANCE=${BALANCE}" +fi + +# Подготавливаем переменные BALANCE_RUB и MIN_BALANCE_RUB +BALANCE_RUB=$(echo ${BALANCE} | rev); BALANCE_RUB=${BALANCE_RUB:0:2}.${BALANCE_RUB:2}; BALANCE_RUB=$(echo $BALANCE_RUB | rev) +MIN_BALANCE_RUB=$(echo ${MIN_BALANCE} | rev); MIN_BALANCE_RUB=${MIN_BALANCE_RUB:0:2}.${MIN_BALANCE_RUB:2}; MIN_BALANCE_RUB=$(echo $MIN_BALANCE_RUB | rev) + +# Сравниваем BALANCE с MIN_BALANCE +if [[ "${BALANCE}" -le "${MIN_BALANCE}" ]]; then + echo "Баланс на Selectel нужно пополнить (${BALANCE_RUB} руб. < ${MIN_BALANCE_RUB} руб.)" +else + echo "Баланс на Selectel достаточен (${BALANCE_RUB} руб. > ${MIN_BALANCE_RUB} руб.)" +fi + +# Выход +exit 0