Проверка баланса телефона в консоли

У каждого из нас есть мобильный телефон, а у кого-то даже не один. А еще есть телефоны ближайших родственников. И если проверить баланс на своем телефоне не составляет труда, то на телефоне, который не рядом с тобой это сделать затруднительно. Поэтому у меня возникло желание собрать все свои расходы по мобильной связи в одном месте, для того, чтобы их можно было вовремя пополнять, и видеть историю операций. Да, конечно можно к каждому телефону привязать карту и включить авто-пополнение, но лично мне не хочется однажды влететь в овердрафт или остаться без телефона, и это не решает проблемы сбора статистики.

Пару лет назад я пользовался программкой «баланс робот» на андроид телефоне, которая в виде виджетов показывала балансы моих телефонов, но тогда я любил постоянно перепрошивать свой телефон, и каждый раз восстанавливать настройки виджетов было очень лень, а еще хотелось, что бы эта информация была доступна не только мне. И я решил, что надо собрать всю эту информацию на web страничке.
Мне очень нравится работать в консоле, и я подумал, что нужно сделать две программы — одна вытаскивает баланс телефона, а вторая собирает статистику в БД и генерирует html странички с отчетом.

Честно говоря, программой это назвать сложно, на самом деле это всего лишь скрипт, который использует: curl, sed и awk для посылки запросов на web-страницы операторов, и в полученных ответах распарсивает баланс. Первая версия скрипта вытаскивала только баланс, сейчас скрипт сильно изменился и может обрабатывать ошибки, которые могут вернуть страницы операторов, например, если неверно ввели пароль. Также скрипт разделен на функции, для каждого оператора своя функция, и служебные функции для обработки ответа http сервера. На текущий момент скрипт может получить баланс для: Мегафона, МТСа, Билайна, МГТСа, Onlime и Qiwi. Исходный код на гитхабе — pbal. Для использования нужно его себе клонировать и сделать исполняемым файл pbal.sh, и запустить с параметрами — оператор, телефон, пароль:

$ ./pbal.sh mts 9164442211 123456
123.21

pbal.sh

Внутри скрипта предусмотрен таймаут работы и количество попыток обращения к серверу, их можно переопределить параметрами запуска скрипта. Есть опция -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 сервере, теперь я имею доступ к балансу своих телефонов в любом месте, а так же вижу историю расходов.

PS 01.11.2012 добавил Київстар
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 11

    0
    Я себе в cinanamon для панельки апплет сделал, там теперь показывает мой баланс и баланс жены, довольно удобно.
    Там апплеты пишутся на javascript
      0
      А я еще прикрутил пополнялку через апи приватбанка, если баланс опускается ниже порога
      0
      Как вариант скрипт можно оформить как плагин для munin, тогда опрашивать, хранить и рисовать графики будет он.
        0
        А потом ОПСОС поменяет верстку страницы и придется все переделывать заново. Парсинг страниц — это тупиковый путь.
          0
          Согласен, но другого выбора не вижу. Если бы ОПСОСы предоставляли данные в виде XML/JSON, и еще бы поддерживали версионность… но такого, к сожалению нет.
          0
          Плохо, что только для Российских операторов. Тоже пригодилось бы, но у меня True Move (Таиланд).
            0
            А определять оператора по телефону нельзя?
              0
              Для этого нужно иметь базу префиксов телефонных номеров и постоянно ее поддерживать, это будет очень круто, для такого простого скрипта.
                0
                Оператора однозначно можно определить по связке MCC + MNC

                Старые навряд ли будут меняться, возможно появление новых, но это маловероятно в ближайшем будущем :)
              0
              Если не страшно бросьте мне в личку информацию как зайти на сайт, попробую добавить этого оператора.
              0
              Киевстар поменял верстку и привет…

              Only users with full accounts can post comments. Log in, please.