У каждого из нас есть мобильный телефон, а у кого-то даже не один. А еще есть телефоны ближайших родственников. И если проверить баланс на своем телефоне не составляет труда, то на телефоне, который не рядом с тобой это сделать затруднительно. Поэтому у меня возникло желание собрать все свои расходы по мобильной связи в одном месте, для того, чтобы их можно было вовремя пополнять, и видеть историю операций. Да, конечно можно к каждому телефону привязать карту и включить авто-пополнение, но лично мне не хочется однажды влететь в овердрафт или остаться без телефона, и это не решает проблемы сбора статистики.
Пару лет назад я пользовался программкой «баланс робот» на андройд телефоне, которая в виде виджетов показывала балансы моих телефонов, но тогда я любил постоянно перепрошивать свой телефон, и каждый раз восстанавливать настройки виджетов было очень лень, а еще хотелось, что бы эта информация была доступна не только мне. И я решил, что надо собрать всю эту информацию на web страничке.
Мне очень нравится работать в консоле, и я подумал, что нужно сделать две программы — одна вытаскивает баланс телефона, а вторая собирает статистику в БД и генерирует html странички с отчетом.
Честно говоря, программой это назвать сложно, на самом деле это всего лишь скрипт, который использует: curl, sed и awk для посылки запросов на web-страницы операторов, и в полученных ответах распарсивает баланс. Первая версия скрипта вытаскивала только баланс, сейчас скрипт сильно изменился и может обрабатывать ошибки, которые могут вернуть страницы операторов, например, если неверно ввели пароль. Также скрипт разделен на функции, для каждого оператора своя функция, и служебные функции для обработки ответа http сервера. На текущий момент скрипт может получить баланс для: Мегафона, МТСа, Билайна, МГТСа, Onlime и Qiwi. Исходный код на гитхабе — pbal. Для использования нужно его себе клонировать и сделать исполняемым файл pbal.sh, и запустить с параметрами — оператор, телефон, пароль:
$ ./pbal.sh mts 9164442211 123456
123.21
Внутри скрипта предусмотрен таймаут работы и количество попыток обращения к серверу, их можно переопределить параметрами запуска скрипта. Есть опция -v, которая помимо баланса показывает имя оператора и логин, удобно, если запускать скрипт подряд несколько раз с разными операторами. И опция –s, которая в случае ошибок не покажет ничего. Пароль можно не вводить, тогда скрипт его запросит во время выполнения.
После того, когда такой скрипт был готов, собрать статистику уже было совсем просто. Я написал скрипт, который по cron’у раз в час запускает pbal.sh и полученную информацию записывает в базу данных, а также генерирует статичные html странички. Скрипт pbalweb.sh лежит в каталоге web на гитхаб’е. Его использовать совсем не обязательно, можно сделать свой, который будет к примеру, использовать rrdtool для хранения полученной информации. Но если интересно, то скрипт pbalweb.sh создает БД sqlite по пути указанной в переменной db и в секции «# Create some operators» записывает в таблицу op — тип оператора, логин и пароль (Данная секция выполняется один раз при создании БД, если потребуется добавить нового оператора, то нужно будет сделать INSERT вручную). Далее если БД существует, то для каждой записи в таблице op запускается pbal.sh и полученные данные записываются в таблицу bal. После этого в директорию указанную в переменной webdir генерируются статичные html странички. Эти странички генерятся на моем web сервере, теперь я имею доступ к балансу своих телефонов в любом месте, а так же вижу историю расходов.
Автор: psyX