DIY или Сделай Сам

индекс
487,20

Transmission — настраиваем SMS уведомления из песочницы

image
По воле случая мне понадобилось на продолжительное время уехать в провинциальный городок, однако имело место сильное желание быть в курсе состояния моих торрентов, поставленных на закачку. Так как в тех местах, куда мне предстояло отправиться, дела с доступом в интернет совсем уж плохие, было принято решение настроить мониторинг закачек на основе GSM сети.

В качестве способа оповещения я выбрал СМС. Модемом послужил старенький мобильный телефон Motorola C350L, подключенный через USB кабель к компьютеру. Потратив немного времени на изучение AT команд я приступил к написанию несложного скрипта.

Отправка сообщений с помощью модема может производиться двумя способами: передачей закодированного PDU (Protocol Data Unit), либо простого текста, при условии, что этот режим поддерживается аппаратом. Мне повезло, так как мой мобильник умел работать с любым из двух режимов. Использовать же я собрался, естественно, второй.

Для корректной отправки СМС требуется всего две AT команды:
AT+CMGF=1
AT+CMGW="номер телефона"[CR]текст сообщения[CTRL+Z]

Объясню смысл каждой из них. Первая устанавливает режим передачи данных (0 — голосовой, 1- текстовый). Вторая собственно и отправляет короткое сообщение на указанный номер.

Полный код получившегося скрипта:
#!/bin/bash

# Адрес GSM модема
MODEM='/dev/ttyACM0'
# Номер получателя
NUMBLER='+71234567890'

# Переключаемся в текстовый режим
echo -e "AT+CMGF=1\r\n" > $MODEM
# Посылаем СМС
echo -e "AT+CMGW=\"$NUMBLER\"\r\nTransmission: torrent \"$TR_TORRENT_NAME\" completed.\032" > $MODEM


Сохраним это в файле send_sms.sh и наделим его правами выполнения:
image

Для того, чтобы Transmission при завершении каждой загрузки выполнял этот скрипт, необходимо в его настройках указать путь к sh файлу:
image

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

Для справки (AT-команды): http://en.wikipedia.org/wiki/Motorola_Phone_AT_Commands
+39
9 сентября 2011, 01:21
72

комментарии (50)

+17
mxx #
Можно уменьшить статью на одну картинку, использовав chmod +x send_sms.sh
+1
Kindman #
а, еще две строчки echo можно было записать в одну
+6
Explode #
Разделено специально, для наглядности отдельных команд.
+10
ComodoHacker #
Если не секрет, чем в вашей ситуации полезны сообщения, что «torrent „$TR_TORRENT_NAME“ completed»? Или просто «сильное желание»? :)

За инструкцию спасибо, пригодится где-нибудь.
0
Explode #
Просто чисто психологическое удовлетворение, не более.
+14
Fillo #
Интересно, но… Но не нужно.
+3
FluffyMan #
Ну, почему не нужно. Автору, например, понадобилось. Да и не в том дело. Приятно же ощущать, что сделал что-то сам и оно работает. Додумался и сделал.

Другое дело, отправлять смс можно было бы не с телефона, а с бесплатных интернет ресурсов. Хотя, с телефона все-таки надежней. А за надежность придется платить (пополнять)
+1
Fillo #
Про то, что сделал сам, и оно работает, я понимаю, приятное ощущение. Идея интересная, все хорошо. :) Но честно, я очень долго думал, зачем оно нужно и так и не придумал. Мое «не нужно» скорее к практической стороне, а не к реализации и статье.
+1
FluffyMan #
я понял Вас.
0
SCANER #
Не все качают только фильмы, ктото и пороботе может чтото скачать и чтобы из роуминга по терминалу каждые 5 минут не залить и переживать. Всегда можно быть уверенным что тебе сообщат.
0
Provlax #
Для примерно похожей задачи я использовал обычную отправку по e-mail. На моем телефоне андроид и о пришедших письмах gmail сигнализирует аналогично полученным SMS.
0
Dexif #
Так как в тех местах, куда мне предстояло отправиться, дела с доступом в интернет совсем уж плохие, было принято решение настроить мониторинг закачек на основе GSM сети.

А идея насчёт SMS нотификаций мне очень понравилась… Пойду пробовать применить.
0
PycmaM #
Если под рукой нет подходящего телефона, можно отправлять через смс-шлюз. Вот тут пример отправки из bash через littlesms pastebin.com/UUyyr3RD оно будет даже дешевле, чем с мобильного (промокод «habrahabr» дает 50% скидку = 25 копеек)
+4
orloff #
можно еще через calendar.google.com отправлять смски бесплатно
0
PycmaM #
можно много чего придумать, но я предпочитаю использовать инструмент по назначению :)
0
kovyrlo #
Спасибо за наводку!
0
zivot_je_cudo #
Это сейчас работает? Я пользовался какое-то время, но в какой-то момент схема работать перестала. Событие создается, уведомление не приходит, пробовал разные промежутки времени, не помогло.
+1
Nashev #
мне присылают. После подтверждения телефона через настройки календаря.
0
zivot_je_cudo #
Я и повторно подтверждал, и все настройки несколько раз проверял… Выглядит все так, что должно работать. О событиях, созданных через web, напоминания приходят исправно.
Где-то у меня косяк, значит, еще раз все проверю.
0
Nashev #
А… Я то события только через веб руками и создаю.
0
pr0tey #
Спасибо!)
Как раз подбирал себе сервис для смс-уведомлений.
А промокод действует на постоянной основе? =)
0
PycmaM #
Да, установленная цена будет действовать постоянно.
0
char #
При регистрации вместо кода подтверждения приходит «null».
0
PycmaM #
Пров сбойнул, поправили.
+2
Anat0ly #
Самое интересное не написали — что качали? :)
0
Explode #
Статья была написана еще в начале лета, опубликовал только сейчас, так что точно и не припомнить. Но по моему в то время я тянул срезы реп для Debian'a и какие то дистрибутивы. Но думаю, это не так важно :)
0
Anat0ly #
Интересно было узнать для чего же была проделана такая работа :)
+1
iru #
про smstools3 наверно никто и не слышал?
0
Nashev #
судя по www.lissyara.su/articles/freebsd/programms/smstools_3/, оно как-то сложнее выходит… в чём бонус?
0
iru #
ну я думаю плюсом можно считать то что SMS можно еще и принимать, а не только отправлять.
0
k14us #
Было бы отлично сделать серию и продолжить описаниями настройки snmp, smtp оповещений.
Подобные способы оповещений могут быть значительно удобней в централизованных системах.
0
Explode #
Да, я думал об этом. Еще я недавно начал заниматься реверс-инжинирингом одного Android приложения, и дело продвигается вполне удачно. В итоге будет возможность безлимитной отправки смс через интернет за чисто символическую месячную абонентскую плату. Эту штуку хочу тоже прикрутить к Transmission.
–1
Arion #
извините за оффтоп., но может кто нибудь тут знает как настроить прокси для Transmission в MacOS? Пробовал ковырять файл конфига но что то ничего не вышло, в итоге приходится юзать Vuze
0
FSA #
Кстати. А кто занимался вопросом отправки сообщений Jabber из скриптов? Значительно дешевле, чем SMS, хотя и свои недостатки есть.
0
rusanovsky #
AT команды на мобильном, вещь…

у нокий работает такая команда как AT+CLIP=1;
и в терминалке показывает номер звонящего при входящем звонке

может кто подскажет аналог такой команды для SAMSUNG-ов?
0
surly #
Обычно сотовые операторы предоставляют услугу: шлешь электронное письмо на адрес вроде 9xxxxxxxxx@sms.домен-оператора.ru, и тебе на телефон приходит SMS. Почему не пошли по этому пути? Вроде бы удобнее: не нужен телефон специально для отправки, сообщения приходят бесплатно.
0
Nashev #
можете привести такие адреса, известные вам?
+1
surly #
Я пользуюсь Мегафоном, про него и напишу.
Описание услуги здесь: svr.megafon.ru/services/communicate/sms_and_e-mail.html

«Услуга «SMS & E-mail» позволяет Вам:
принимать текстовые сообщения, отправленные с электронной почты (E-mail) на мобильный телефон в виде SMS-сообщений;
.....
Для подключения услуги «SMS & E-mail», необходимо отправить SMS с буквой С на номер 000908.
.....
При подключении услуги абоненту присваивается адрес вида 7922xxxxxxx@sms.ugsm.ru, где ххххххх – последние 7 цифр федерального номера адресата.»


И всё, что отправлено на ящик 7922xxxxxxx@sms.ugsm.ru, придет на этот номер телефона в виде SMS.
0
Nashev #
а, это только сбее слать… ну, тож иногда полезно.
0
surly #
«только сбее слать» — не понял. Переформулируй в более общепринятой лексике.
0
Nashev #
«себе». В смысле, на свой телефон, а не делать рассылку на произвольные.
0
surly #
Да почему же. Суть услуги в том, что на телефонный номер +7-922-xxxxx можно слать SMS не только с телефона и с сайта, но и по e-mail с помощью какого угодно почтового клиента. Будет это твой собственный телефон, или чужой телефон, или твой телефон но письмо от другого человека — без разницы.

Если ты найдешь подобные адреса у других провайдеров, то в программе можно задать массив из нескольких e-mail адресов и таким образом организовать рассылку.
+1
mihmig #
спасибо за информацию по AT-командам (полезна для создания сигнализации на даче на базе сотового и ноутбука)
А так СМС дешевле и надежнее посылать через СМС шлюзы, коих много. Цена от 1 руб. до 10коп. (Это в том случае, если на машине есть интернет — 99% процентов ыероятности, что Вы торренты через интернет качаете?)
0
BaRoN #
У меня, например, 100 или 150 СМС-ок есть предоплаченных на тарифе (МТС). Так что иногда использование именно СМС вполне оправдано.

А ещё у нас в регионе был (есть?) оператор, который за небольшую абонентскую плату предлагал (-ет?) безлимитные СМС. Среди студентов пользовался огромной популярностью.
0
BaRoN #
Кстати, не подскажете случайно шлюз за 10 копеек? Пока что дешевле 25 ничего не попадалось, целенаправленно не искал, правда.
0
mihmig #
сорри, попутал, 10коп. как я читал — стоимость смс между операторами. А я пользуюсь (разумно немного) аккаунтом знакомого бесплатно.
0
PycmaM #
Обратитесь в суппорт littlesms.ru. Договоримся :)
+2
zivot_je_cudo #
Спасибо за скриншоты, не знал как сделать файл исполняемым.
Спасибо за АТ-команды, я тоже не читал кучу статей на хабре на эту тему.
Спасибо за блог DYU, это очень по теме.
+1
Nashev #
мне здесь чудится ирония?
+2
Temikus #
Для пользователей sms.ru можно использовать такой скрипт:
#!/bin/bash
TR_SMS=$(echo $TR_TORRENT_NAME | awk '{$1=$1}1' OFS="%20")
curl sms.ru/sms/send\?api_id=вашapiid\&to=номер\&from=имясервера\&text=Torrent%20has%20finished%20downloading:%20$TR_SMS

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.