Initial commit

This commit is contained in:
2021-07-14 13:16:49 +03:00
commit 6c2471b6da
3 changed files with 82 additions and 0 deletions

8
.env Normal file
View File

@@ -0,0 +1,8 @@
# Selectel API key
SELECTEL_API_KEY="Example API key"
# Минимально допустимый баланс (в копейках)
MIN_BALANCE="3000000"
# E-mail для уведомлений о снижении баланса ниже минимального
EMAIL_FOR_NOTIFICATION="email@example.com"

12
README.md Normal file
View File

@@ -0,0 +1,12 @@
# SELECTEL-BALANCE
Скрипт мониторинга баланса в Selectel
## Требования
- доступ в Интернет
- наличие ключа API (https://my.selectel.ru/profile/apikeys) в действующем аккаунте Selectel
- заполненные переменные в .env
## Использование
Заполнить .env и выполнять периодически
./selectel-balance.sh

62
selectel-balance.sh Executable file
View File

@@ -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