Простенький быдло-скрипт для получения текущего баланса по счету ADSL-интернета ВолгиТелеком:
#!/bin/bash
##
## UTF-8:
## Скрипт для Zabbix, осуществляющий мониторинг состояния лицевого счета
## абонента ОАО Кировский филиал "Ростелеком-Волга" (ADSL).
## Параметр balans выводит текущее состояние счета в виде "0.00" с учетом
## возможности отрицательного баланса. В случае неудачной попытки получения
## баланса выводится значение -1.
## Параметр status используется для получения более полной инфомации. В случае
## ошибки со стороны биллинг-системы выдается номер и описание ошибки. Если ошибок
## нет, выдается текущий баланс.
##
#Учетные данные для проверки
LOGIN=
PASSWD=
#Проверка наличия логина и пароля
if [ -z $LOGIN ] || [ -z $PASSWD ]; then
echo "Enter LOGIN/PASSWD into script"
exit 1
fi
#Работаем во временной директории
cd /tmp
#Запрашиваем страницу аутентификации, вводим учетные данные, получаем параметры для доступа к личному кабинету.
wget --no-check-certificate -q -O 1.html "https://j-cabinet.kirov.ru:4459/pls/base/www.GetHomePage?p_logname=${LOGIN}&p_pwd=${PASSWD}"
#Полное имя пользователя
p_logname=`cat 1.html | egrep -o 'p_logname=([A-Z0-9]+)' | uniq | sed -e s/p_logname\=//`
#Некий хэш пароля
chksum=`cat 1.html | egrep -o 'chksum=([0-9]+)' | uniq | sed -e s/chksum\=//`
# Получаем страницу личного кабинета, извлекаем из нее текущее состояние счета или ошибку.
wget --no-check-certificate -q -O 2.html "https://j-cabinet.kirov.ru:4459/pls/base/www.PageViewer?page_name=KIROV*ADM_CON_INFO&logname=${p_logname}&n3=p_username&v3=$p_username$&n4=p_adm&v4=$p_adm$&chksum=${chksum}" | grep -A 1 dat_sel | egrep -o '[0-9.-]+'
#Баланс
BALANS=`cat 2.html | grep -A 1 dat_sel | egrep -o '[0-9.-]+'`
#Номер ошибки
ERR=`cat 2.html | egrep -o 'W+\-[0-9]+'`
#Описание ошибки
ERRNAME=`iconv -f CP1251 -t UTF-8 2.html | grep WWW | egrep -o '([а-Я]+\s?)+'`
#Удаляем временные файлы.
rm -f {1,2}.html
#Выводим требуемые данные.
case $2 in
balans)
if [ -z $BALANS ]; then
echo -1
else
echo "$BALANS"
fi
;;
status)
if [ -z $ERR ]; then
echo "Balans now is $BALANS"
else
echo "Remote server error: $ERR - $ERRNAME"
fi
;;
*)
echo "Usage: vt_check_balans.sh $1 {status|balans}"
esac
Код отформатирован и вставлен с помощью centricle.com. Как выяснилось, сервис Postable теряет некоторые символы (в частности, "+"), что в регулярных выражениях критично. Пробовал хайлатеры кода, не понравилось. Также Blogger умеет сам игнорить парсинг вставленных спецсимволов в html-страничке - достаточно заключить блок текста в теги <pre></pre> - только шрифт при этом изменяется как по форме, так и по кеглю, а разбираться с этим лень. Но так, на будущее, чтобы знать.
UPD:
Для проверки баланса Мегафона можно интегрировать в скрипт следующую строку запроса (предварительно подключив услугу "Сервис-Гид" и разрешив авторизацию внешних программ):
UPD:
Для проверки баланса Мегафона можно интегрировать в скрипт следующую строку запроса (предварительно подключив услугу "Сервис-Гид" и разрешив авторизацию внешних программ):
curl -s -k "https://sg.megafonural.ru/ROBOTS/SC_TRAY_INFO?X_Username=${LOGIN}&X_Password=${PASSWD}" | egrep -o '([0-9.-]+)' | sed -e s/\<\BALANCE\>\//В случае МТС (Бывший "Мультинекс", бывший "ВятКТВ") используется такой запрос:
wget --no-check-certificate -q -O multi.html "https://lk.kirovnet.net/api?key=${KEY}&contract=${CON}"где ${KEY} генерируется в личном кабинете, а ${CON} - номер контракта.