Прием и отправка SMS в Linux
Прием и отправка SMS в Linux Для организации автоматизации приема и отправки SMS в Linux можно использовать пакет gnokii и подключенный к системе телефон. В простейшем случае можно использовать возможность консольной утилиты gnokii из пакета gnokii-cli, но при необходимости более сложной автоматизации имеет смысл воспользоваться Perl-модулем GSM::SMS или GSMD::Gnokii.
Устанавливаем gnokii, для Debian/Ubuntu:
где gnokii-cli — интерфейс командной строки, gnokii-smsd демон для работы с SMS, а xgnokii — GUI интерфейс. Последние два ставим на свое усмотрение.
Подключаем телефон через USB-порт. Смотрим в /var/log/messages к какому устройству осуществилась привязка (например, /dev/ttyACM0)
Создаем файл конфигурации /home/mc/.gnokiirc
где model — тип устройства: AT — для большинства телефонов, series40 — для телефонов Nokia с системой series40, gnapplet для старых телефонов Nokia Series60.
connection — тип соединения serial — USB/RS-232, irda — инфракрасный порт, bluetooth — Bluetooth.
port — порт, для USB — /dev/ttyACM0 или /dev/ttyUSB0, для Bluetooth указываем адрес устройства («aa:bb:cc:dd:ee:ff»).
Для USB-устройств также можно попробовать сочетание connection=dku2libusb и port = N, где N — номер устройства.
Проверяем поддерживается ли телефон:
Для мониторинга активности:
Возможности gnokii позволяют достаточно полно контролировать телефон, но нас интересует работа с SMS.
где тип_памяти: SM — для SIM-карты, ME — для внутренней памяти и MT для комбинированных хранилищ, IN — inbox, OU — outbox. Посмотреть какое хранилище используется на телефоне можно командой «gnokii —showsmsfolderstatus» старт — начальная позиция сообщения cтоп — конечная позиция сообщения, если не указать будет прочитано одно сообщение, если указать «end» будут выведены все сообщения до конечной позиции
Пример для вывода всех сохраненных SMS:
Для отправки SMS можно использовать команду:
Другой способ отправки: в комплекте с Perl-модулем SMS::Send поставляется утилита xpl-sender, которую можно использовать не только как пример для написания скриптов, но и отправлять через неё сообщения:
Вывод содержимого адресной книги:
Адресную книгу можно сохранить, а затем восстановить:
В состав gnokii входит демон SMSD, который позволяет организовать работу полноценного SMS-шлюза, на лету обрабатывающего входящие SMS. Для хранения отправляемых и получаемых сообщений SMSD может использовать СУБД MySQL, PostgreSQL (плагины gnokii-smsd-mysql и gnokii-smsd-pgsql) или файловое хранилище (—module file).
Ставим недостающие пакеты:
Создаем структуру БД, используя поставляемый в комплекте с gnokii-smsd-mysql пример:
в результате будут созданы три простые таблицы inbox, outbox и multipartinbox, структура которых имеет следующий вид:
где «-u» — имя пользователя БД, «-d» — имя базы, «-с» — хост, а «-m» — модуль хранения.
Отправив теперь SMS на подключенный к компьютеру телефон, smsd сразу перехватит его и запишет в базу.
выполнив «select * from inbox;» увидим примерно такое:
Для отправки сообщения достаточно добавить новую запись в таблицу outbox, smsd сразу его подхватит его и отправит. Например:
В заключение можно отметить, что smsd может работать без СУБД, используя файловое хранилище. Пример запуска:
Для отправки SMS в spool-директории нужно создать файл с любым именем в формате:
после успешной отправки файл будет удален.
Через опцию «-u» можно указать путь к скрипту, который будет выполняться при каждом получении SMS. Иначе входящие сообщения будут выводиться в стандартный выходной поток в формате «действие номер дата См. также
Источник
Отправка и прием 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. Мне также очень интересна компьютерная безопасность и искусственный интеллект. Я стараюсь как можно больше читать публикуемые здесь материалы.
Кроме работы за компьютером мне нравится читать (в основном фантастику и научно-популярную литературу, однако я читаю все что угодно, кроме романов и романтической литературы), слушать музыку (среди любимых певцов: Шаниа Тваин, Ин-Грид, Кристал Ватерс) и разбирать что-нибудь, чтобы посмотреть, как это работает.
Источник