- Отправка и прием SMS под Линуксом
- Шаги перед установкой
- Установка gnokii
- Настройка gnokii
- Тестирование соединения gnokii с телефоном
- Отправка SMS с вашего компьютера
- Отправка SMS с помощью специально оформленных email-сообщений
- Прием SMS-сообщений на вашем компьютере.
- Итоги
- Отправка бесплатного sms сообщения в linux
Отправка и прием SMS под Линуксом
Оригинал: Sending and Receiving SMS from your Linux Computer. Linux Gazette, #164
Автор: Suramya Tomar,
Дата публикации: июль 2009 г.
Перевод: С.Владимирский
Дата перевода: сентябрь 2009 г.
Что такое SMS? SMS — это сервис коротких сообщений, который используется для отправки текстовых посланий с одного сотового телефона GSM на другой. Но иногда вы бы хотели послать SMS-сообщение, используя ваш компьютер. Есть три способа, которыми вы можете послать SMS с компьютера:
- Использовать сервис SMS-шлюза, который позволяет вашему компьютеру соединиться с ним, используя API, и посылать сообщения. В Интернете существует огромное количество таких сервисов, но большинство из них не свободны и требуют оплаты.
- Использовать сотовый телефон или GPRS-модем, подключенный к компьютеру.
- Некоторые провайдеры позволяют отправлять SMS на номер телефона путем отправки почтового email-сообщения на специальный адрес электронной почты, обеспечивающий преобразование сообщения.
Я выбираю использование второго варианта, потому что мой провайдер не поддерживает последнюю опцию и, я думаю, это дешевле, чем первый вариант. Все, что вам необходимо, чтобы это работало, — это дополнительный телефон и дешевый тарифный план, что позволит вам отправлять и принимать SMS. В моем случае у меня был старый Sony Ericsson Т610, пылившийся в моем столе, так что я имел предоплаченную SIM-карту и был готов к действию.
Шаги перед установкой
Первое, что вы должны сделать, это подключить ваш сотовый телефон к вашему компьютеру. Я рекомендую использовать для этого Bluetooth, потому что в этом случает вам не нужно беспокоиться, хватит ли длины шнура, соединяющего телефон с компьютером. Если же ваш телефон не поддерживает Bluetooth, вы можете использовать соединительный USB-кабель.
Если вы используете для соединения Bluetooth, вам потребуется выполнить подключение телефона к компьютеру и настроить телефон таким образом, чтобы позволить вашему компьютеру подключаться к телефону без авторизации. Шаги, которые нужно для этого предпринять, различны для телефонов разных моделей. Поэтому вам будет необходимо свериться с руководством по эксплуатации вашего телефона для точного выполнения всех необходимых действий.
Настроив телефон на автоматическое подключение без авторизации, мы готовы к дальнейшим действиям. Теперь для того, чтобы позволить вашему компьютеру общаться с вашим телефоном, вы должны будете установить на вашем компьютере драйвер модема для мобильных телефонов, называемый gnokii. Необходимые шаги для этого описаны ниже.
Установка gnokii
Эта команда загрузит и установит gnokii на вашем компьютере. В большинстве других дистрибутивов также имеется установочный пакет, который можно найти и скачать, но даже если в вашем дистрибутиве такого пакета нет, вы всегда можете скомпилировать программу из исходных кодов и установить.
Для установки из исходных кодов вам нужно будет загрузить последнюю версию gnokii с сайта проекта ( http://www.gnokii.org/download/gnokii/ ).
Получив последнюю версию исходных кодов, мы можем установить их в нашей системе. Для того, чтобы это сделать, мы сначала должны раскрыть архив, выполнив следующую команду:
Когда tar закончит раскрытие архива, перейдите в папку gnokii с помощью следующей команды:
Теперь, если вы подключаете ваш телефон к компьютеру с помощью Bluetooth, вам сначала будет необходимо установить библиотеку libbluetooth-dev с помощью следующей команды (от имени root-а):
Когда библиотека установлена, вы можете настроить установщик gnokii, используя следующую команду:
Если вы не используете Bluetooth, вместо указанной команды вам необходимо будет использовать следующую команду:
Когда настройка выполнена и вы не видите каких-либо ошибок, скомпилируйте gnokii с помощью следующей команды:
Если компиляция закончена без ошибок, установите gnokii посредством следующей команды (снова от root-а):
После того, как gnokii установлена, вы должны будете настроить ее до того, как сможете начать использовать.
Настройка gnokii
Образец файла настройки для gnokii находится среди файлов исходных кодов в подпапке Docs/sample/ той папки, в которую вы развернули архив исходных файлов gnokii. Если вы установили gnokii с помощью apt-get, то образец файла настройки находится в папке /etc/gnokiirc.
Простейший способ настроить gnokii — изменить образец файла настройки. Для этого начнем с копирования образца файла настройки в вашу домашнюю папку с помощью следующей команды:
и откроем файл в вашем любимом текстовом редакторе для его редактирования. Первое, что вы должны сделать, это сказать gnokii, какой телефон вы используете, путем установки переменной ‘model’ в соответствии с приведенными ниже указаниями:
- Установить model = series40, если вы используете телефон Nokia, кроме серии Symbian Series60
- Установить model = gnapplet, если у вас телефон Nokia Symbian Series60 до 3-ей версии
- Установить model = AT для всех остальных моделей телефонов.
В моем случае я устанавливаю модель AT.
Далее вы должны сказать gnokii, каким образом ваш телефон подключается к компьютеру. Для этого вы должны будете изменить переменные ‘connection’, ‘port’ и ‘rfcomm_channel’.
Если вы используете для соединения Bluetooth, установите для переменной соединения значение ‘bluetooth’, а для переменной порта значение адреса Bluetooth вашего телефона как показано ниже:
В соответствии с руководством пользователя переменная ‘rfcomm_channel’ может быть опущена как автоопределяемая, однако я вынужден был выполнить настройку переменной во всех деталях, чтобы использовать gnokii для соединения.
Большинство телефонов используют переменную rfcomm_channel=1. Однако для моего Nokia N95 8GB я вынужден был установить значение ‘2’, тогда как Sony Ericsson T610 использовал значение rfcomm_channel=1. Если вы не уверены, можете использовать команды ‘ sdptool search SP’ или ‘ sdptool search DUN’ или ‘ sdptool browse’ , чтобы найти правильный номер канала для вашего телефона.
Если вы для соединения используете USB, то имя соединения зависит от типа используемого вами соединительного кабеля и модели телефона. Некоторые из значений, которые вы можете попробовать подставить: ‘connection = serial’ для использования протокола AT и ‘connection = dku2libusb’ для использования протокола FBUS (если кабель и телефон поддерживают этот протокол).
Имя порта также зависит от типа кабеля: некоторые кабели создают /dev/ttyACM0, другие создают /dev/ttyUSB0. При использовании значения переменной connection = dku2libusb значение для port=1 устанавливает выбор для первого телефона, port=2 — для второго телефона и так далее. Для идентификации порта, к которому подключен телефон, смотрите /var/log/messages.
После того, как вы сделали изменения и сохранили файл настроек, вы готовы тестировать соединение.
Тестирование соединения gnokii с телефоном
В командной строке наберите следующую команду:
Если вы все установили корректно, то увидите выходной листинг для вашей модели телефона, аналогичный следующему:
Если вы не видите этого листинга, значит, gnokii не смог подключиться к вашему телефону. Проверьте доступность вашего телефона для соединения Bluetooth, корректность указания модели, корректность адреса и протокола, по которым производится попытка соединения.
Если вы все еще не можете подключиться, вам следует включить режим отладки для gnokii путем установки флага ‘debug = on’ (без кавычек) в
/.gnokiirc. Просмотр в режиме отладки позволит вам идентифицировать проблему и устранить ее.
Отправка SMS с вашего компьютера
Корректно настроив gnokii и получив выходной листинг как было показано выше, вы теперь готовы отправить SMS с вашего компьютера. Команда отправки SMS следующая:
Эта команда использует контент со стандартного входа. Например, протокол отправки SMS на номер 555-123-4567 будет выглядеть следующим образом:
gnokii может быть загружен с другими функциями. Используйте команду ‘gnokii —help’ для получения списка параметров и функциональности.
Теперь, когда вы имеете работающее соединение, вы ограничены только вашей фантазией, как вы можете это использовать. Я создал шлюз, который позволяет мне отправлять SMS путем отправки почтового сообщения на специально оформленный адрес электронной почты email. Далее эта программа описывается более подробно.
Отправка SMS с помощью специально оформленных email-сообщений
Чтобы отправлять SMS, когда я получаю специально оформленное email-сообщение, мне необходимо было написать программу, которая проверяет наличие новых сообщений email, а затем обрабатывает их. Для этого я использовал Perl, поскольку он превосходно подходит для обработки текста. Кроме того, я уже написал часть кода для другого проекта (отправка/прием IM как сособщений email).
Первое, что мне было нужно,- это новый email-аккаунт, к которому я мог бы иметь доступ через РОР3. Поскольку у меня есть свой домен, я вошел в панель управления моим доменом и создал новый email-адрес. Если хотите, вы можете использовать gmail.
В моей программе я полагаю, что номер телефона, на который я отправляю SMS, является темой отправленного email-сообщения, а содержание SMS — это фактическое содержание email-сообщения.
В этом фрагменте кода мы подключаемся к почтовому серверу email, загружаем список новых email-сообщений, а затем загружаем каждое email-сообщение по кругу, обрабатываем его, а затем удаляем сообщение.
Вся обработка выполняется в функции ProcessEmail(). В этой функции мы сначала выделяем имя ‘От кого'(‘From’) из email-сообщения (оно добавляется в SMS, так что получатель SMS знает, кто его послал).
Получив поле ‘От кого'(‘From’), мы выделяем тему из email-сообщения и проверяем, что это номер телефона (Этот номер может быть с префиксом ‘+’ для обозначения кода страны). Если это не номер, мы игнорируем и удаляем email-сообщение. Листинг кода для этой операции показан ниже:
Наконец, мы выделяем содержание из email-сообщения. Оно становится содержанием SMS-сообщения.
Теперь у нас есть все необходимые компоненты для отправки SMS: номер назначения, содержание SMS и адрес «От кого», так что мы готовы отправить SMS. Тем не менее, поскольку мы можем отправить в одном сообщении, как максимум, 160 знаков, перед отправкой SMS нам необходимо проверить, что содержание SMS умещается в 160 знаков.
Файлы исходных кодов программы Email2SMS доступны для скачивания.
Прием SMS-сообщений на вашем компьютере.
Возможность приема SMS на вашем компьютере зависит от модели телефона, который вы используете, поскольку gnokii поддерживает не все модели телефонов. Согласно информации на сайте проекта gnokii поддерживает большинство телефонов Nokia серий 3110/3180, 5110/6110, 7110/6210 и 6510/6310. К сожалению, поддержка АТ в телефонах серии Symbian OS сильно ограничена, так что на этих телефонах обеспечиваются только самые основные функции. Более детальная информация о поддержке телефонов доступна по на сайте проекта .
К моему прискорбию, я не смог прочитать SMS-сообщения с помощью gnokii с телефонов Nokia как серии N95, так и серии T610. Мне удалось организовать только отправку SMS-сообщений с этих телефонов.
Если ваш телефон поддерживается, вы можете прочитать SMS-сообщение на телефоне, используя следующую команду:
Тип памяти указывает gnokii, откуда считывать SMS-сообщение. Большинство телефонов поддерживают ограниченный подкласс типов памяти. Для получения списка поддерживаемых типов памяти используйте следующую команду:
Некоторые возможные значения:
- ME: Internal Phone memory
- SM: SIM card
- MT: Combined ME and SIM phonebook
- CB: Currently selected memory
Для считывания всех SMS из внутренней памяти телефонов на стандартный дисплей наберите следующую команду:
Другая интересная опция для считывания SMS: ‘—smsreader’, которая обеспечивает ожидание входящих сообщений и сохранение их в почтовом ящике в папке /tmp/sms/* (фактическое имя файла может меняться). В этом случае сообщения никогда не сохраняются в телефоне.
Итоги
Теперь, когда у вас есть телефон, подключенный к вашему компьютеру, вы можете отправлять и получать SMS-сообщения с помощью компьютера, задавая определенные критерии для управления SMS, такие как входящие сообщения email, заслуживающие особого внимания, или когда назначается важная встреча. Вы можете сделать так, чтобы компьютер ждал сообщения, затем инициировал звонок на заданный номер и проиграл для телефона назначения звуковой файл. Все, чем вы сейчас ограничены,- это ваша фантазия и возможности вашего телефона.
Мне было бы интересно услышать о любых проектах, которые вы могли бы реализовать на основе этой публикации. Так что если у вас есть идея интересного проекта, свяжитесь со мной.
Биография автора (Suramya Tomar)
Я родился в 1980 году в небольшом госпитале военно-воздушных сил в городе Хашимара, Индия. Последующие 18 лет я провел в Индии, пройдя за это время двенадцатилетнее обучение в 7 школах.
Линукс я начал изучать в конце 1999г., когда друг дал мне инсталляционный CD-диск Redhat 7.1, а другой друг «пожертвовал» жесткий диск на 6ГБ. Это произошло сразу после того, как упал мой Windows 98 и я решил дать возможность выстрелить Линуксу. Я его испытал и почти сразу привязался к нему. Через два года я сделал апдейт на Redhat 7.3, но когда Redhat решил прекратить поддержку Redhat 7.3, я переключился на Debian и с тех пор чувствую себя счастливым.
Мне нравится много программировать и недавно я понял, как разобраться в неразберихе кодов, с помощью которых некоторые любят вызывать скрипты на Perl, и обнаружил, что мне это действительно нравится. Для интернет-сайтов я предпочитаю использовать РНР с СУБД MySQL. Я могу программировать на С, С++, VB, .NET. Мне также очень интересна компьютерная безопасность и искусственный интеллект. Я стараюсь как можно больше читать публикуемые здесь материалы.
Кроме работы за компьютером мне нравится читать (в основном фантастику и научно-популярную литературу, однако я читаю все что угодно, кроме романов и романтической литературы), слушать музыку (среди любимых певцов: Шаниа Тваин, Ин-Грид, Кристал Ватерс) и разбирать что-нибудь, чтобы посмотреть, как это работает.
Источник
Отправка бесплатного sms сообщения в linux
UPD: Рыская на просторах интернета набрел на новый более простой способ, без танцев с питоном( а можно и с ним если необходимо).
Оказалось что сайт sms.ru уже более полугода предоставляет Бесплатные СМС для программистов.
Регистрация проходит на номер мобильного телефона, никаких смс отправлять для этого не нужно. На номер придет только проверочный код.
После регистрации можно отправлять до 60смс в день на свой номер, указанный при регистрации. Уже почти месяц как перевел все свои сервисы с гугла на данный сервис. Радует отсутствие минутной задержки перед отправкой и возможность получения статуса сообщения.
Отправить можно разными способами, на сайте, в разделе «Программистам» есть множество готовых примеров:
- HTTP
- curl для командной строки (UTF-8)
- php (с включенным модулем curl)
- php (без curl)
- php (усиленная авторизация)
- PERL (усиленная авторизация)
- Python
Самый простой способ это открыть страницу:
sms.ru/sms/send?api_id=xxxx-xxxx-xxxxx-xxxx-xxxx&to=номер_телефона&text=hello+world
,где — xxxx-xxxx-xxxxx-xxxx-xxxx это id доступный после регистрации.
Так же есть возможность пересылки email на смс. В разделе «Почта sms.ru» можно настроить свой почтовый ящик name sms.ru письма на который будут пересылаться на телефон в виде смс. При включенной опции «обрезать до 1смс» все сообщения на свой номер будут бесплатны.
В google calendar есть очень интересная функция — уведомления. Благодаря ей можно получать бесплатные смс на телефон о событиях в календаре. Поддерживается очень много стран и операторов сотовой связи:
Беларусь
- JLLC Mobile TeleSystems
- VELCOM
Россия
- Билайн
- МегаФон
- МТС
- Скай Линк
Полный список стран здесь. (у меня например смс также приходили к операторам которых нет в списке)
Умельцы с форума wl500g.info написали парочку скриптов которые шлют любые смс через google calendar. Задержка составляет всего 1 минуту, а ограничение 20 смс в сутки пока обойти не удалось.
Для начала нужно зарегистрироваться в gmail.
В настройках google календаря, в пункте «настройка для мобильных устройств» ввести и активировать свой мобильный телефон. Номер телефона можно ввести только один, но впоследствии его можно будет сменить.
Дальше устанавливаем python и bc
sudo apt-get install python
sudo apt-get install bc
Качаем gdata-python-client питон клиент для календаря. И устанавливаем его.
wget gdata-python-client.googlecode.com/files/gdata-2.0.13.tar.gz
tar xfv gdata-2.0.13.tar.gz
rm gdata-2.0.13.tar.gz
cd gdata-2.0.13
python setup.py install
Создаем папку /opt/etc/calendarSMS и кладем в нее питоновский скрипт, скачанный по ссылке. (если папка другая — то нужно поправить пути в файле) Я исправил все на /etc/calendarSMS
В архиве по ссылке выше лежит конфиг файл для скрипта, его кладем рядом и правим.
[sendsms]
user: vassio
pw: *******
starttime: 120
endtime: 180
remindertime: 1
calendar: fafgttkq8ed2idfgfhdfidn6eok@group.calendar.google. com
attempt:11
delay:5
user аккаунт google
pw пароль к аккаунту google
starttime указывает через какое время будет начато мероприятие(в секундах)
endtime указывает через какое время будет закончено мероприятие(в секундах)
remindertime время напоминания(в минутах)
calendar Идентификатор календаря (например fafgttkq8ed2idfgfhdfidn6eok@group.calendar.google. com). Можно посмотреть в настройках календаря — подробные сведения конкретного календаря, поле «адрес календаря» и там справа в скобках
attempt Максимальное количество попыток установить новое напоминание в календарь
delay Время ожидания между попытками
Дальше нужно скачать и положить файл sendsms в туже папку /opt/etc/calendarSMS (если меняли путь то не забудьте поправить его везде)
Для синхронизации времени перед каждой отправкой в примере используется ntpclient. Он используется только в предыдущем пункте. В Убунте я исправил его на ntpdate и все заработало.
Не забываем дать права на запуск
chmod 777 /opt/etc/calendarSMS/sendsms
Вот и все, теперь что бы отправить себе sms набираем
sendsms [-inet] [-?] [-sync] [сообщ]
-inet позволяет перед отправкой проверить доступ к интернету(google.com), пока интернет не появится сообщение не отправится
-? эта справка
-sync перед отправкой синхронезировать время
сообщ сообщение которое будет отправлено
Пример: /opt/etc/calendarSMS/sendsms -inet -sync Привет Мир!
Область применения огромна:
- Смс о завершившийся закачке в торрент клиенте
- Смс о сработке датчика движения в системах видео наблюдения
- Смс о достижении определенного порога в наблюдаемой величине
- Смс о сбое канала связи/сервера/программы
- и т.д. и т.п.
Единственное ограничение 20 смс в сутки на 1 номер.
Но для каждого события можно завести свой гугл аккаунт, совпадения номеров он с разными аккаунтами не сверяет.
Источник