xT 12.02.2010 20:44

СкриптыУведомления о балансе

Сначала думал очередной раз не присоединиться к Неделе Чего-Либо на Вилинуксе, так как идеи не было, но буквально в конце рабочего дня она нашлась
: )

Не нашел в нигде в Личном Кабинете своего провайдера такой опции, как получение на почту уведомлений о наличии средств на балансе.
Поэтому решил написать небольшой костыль, чтобы отправлять мне каждый день письма и смс-ки со моим балансом.

Итак, прежде всего скажу какие средства потребовались:
Linux : )expect - позволяет интерактивным приложениям, работа которых подразумевает взаимодействие с пользователем, работать в автоматическом режимеlinks - текстовый браузер (все остальные консольные приложения либо отказывались работать с expect, либо не могли нормально пройти аутентификацию биллинга)awk, grep - утилиты для работы с текстомmsmtp - консольный smpt-клиентcron - планировщикMAIL2SMS/SMS2MAIL - подключенная услуга у оператора сотовой связи

Так как это костыль, писалось на коленке - все пути прибиты гвоздями, вылизывать совершенно не охота, работает и ладно ))

Конфиг msmtp:
у меня он ~/.msmtprc
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
account default
host smtp.gmail.com
port 587

protocol smtp

tls on
tls_starttls on
tls_certcheck off

auth on
user ЯЩИК с которого будет уходит почта(юзер@домен)
password ПАРОЛЬ ящика

#хедер письма
from alexander.ku@домен

logfile /home/xt/.msmtp.log




Скрипт получения-сохранения странички личного кабинета:
у меня он ~/bin/balance_expect.sh
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/expect

#Куда заходить
set URL "https://**************/******/*******.php"

#Логин и пароль
set USER "*************"
set PASS "*************"

#Куда сохраняем страничку
set DUMP "/home/xt/balance.html"

#Далее вызываем консольный браузер links и заставляем его в неинтерактивном режиме зайти на страничку биллинга, аутентифицироваться, пройти по пунктам меню и сохранить её(страничку) в файл.
spawn links $URL
expect "User ID"
send "$USER"
sleep 1
send "\033\<b>
send "$PASS\r"
sleep 1
expect "LANBilling | Interfejs klienta"
sleep 1
send "\033\<27"
sleep 1
send "\033\</b><b></b><b></b><b></b><b></b><b></b><b></b><b></b><b></b><b>
send "\r"
sleep 1
expect "Download"
send "\b\b\b\b\b\b\b\b\b\b\b"
send "$DUMP\r"
send "Q"
expect eof</b>




Основной скрипт, вызывающий предыдущий и отправляющий результаты на смс и почту:
у меня он ~/bin/balance.sh
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash

#Откуда брать результаты
DUMP="/home/xt/balance.html"

#Запускам скрипт сохранения странички
/home/xt/bin/balance_expect.sh

#Сохраняем баланс в переменную
BALANCE=$(cat $DUMP | grep Balans | awk {'print $2'})

#Определяем куда слать уведомления (у меня МТС)
SMS="№телефона@sms.mtslife.ru"
EMAIL="почтовый ящик"

#Формируем тело сообщений (делаю разным, так как получаю почту на гмайл, и мне не нравиться когда они падают в одну цепочку)
MESSAGE="To: me\nSubject: InetBalance $(date +"%d.%m.%Y")\n\n$BALANCE"
SMSMESSAGE="To: me\nSubject: InetBalance\n\n$BALANCE\n$(date +"%H:%M %d.%m.%Y")"

#Отправляем сообщения используя msmtp и его настройки
echo -e ${MESSAGE} | msmtp --file=/home/xt/.msmtprc $EMAIL
echo -e ${SMSMESSAGE} | msmtp --file=/home/xt/.msmtprc $SMS

#Удаляем сохраненную страничку, чтобы при следующем вызове скрипта-сохраняльщика, links не заругался на уже имеющийся файл
rm $DUMP



Теперь кидаем это в крон пользователя:
1
crontab -e


вбиваем туда
1
10 0 * * * /home/xt/bin/balance.sh


т.е. запускаем в 10 минут первого каждый день (деньги ежедневно снимаются со счета в 00:00).


Все, мой рабочий комп не выключается, и если нет проблем с электричеством или связью - я каждый день получаю уведомления о балансе
: )


Тэги: awk bash expect grep links msmtp script sms баланс баш интернеты скрипт смс
+ 9 -
Похожие Поделиться

mrded 12.02.2010 20:55 #
я вот щас думаю, чего бы мне такого смс'кой отправлять себе с инета кадый день:)
booley 12.02.2010 21:07 #
А на Теле2-Томск не получается слать. В смысле таких вещей как email2sms нет в принципе. Их техподдержка порадовала:
"Используйте Mail.ru-Agent"
Нет слов.

(хотя смски сами по себе дешевые - 0.01 за штуку + 1 руб в день)
Yuko 12.02.2010 21:51 #
однозначно, плюс.
но у меня другая проблема: каким бы ни был баланс лицевого счета, в личном кабинете всегда 51 руб. уже полгода )
xT 12.02.2010 22:12 #
а как ориентируешься? в слепую по датам?
Yuko 13.02.2010 13:26 #
смс с напоминанием мне, все же, приходит (включено в настройках уведомлений).
TiFFolk 14.02.2010 15:20 #
Тут следует использовать curl вместо expect и links
xT 15.02.2010 08:38 #
Следует, пробовал - нормально аутентификацию пройти не может