The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Прием и отправка SMS в Linux"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Прием и отправка SMS в Linux"  +1 +/
Сообщение от auto_tips (ok) on 21-Янв-11, 23:04 
Для организации автоматизации приема и отправки SMS в Linux можно использовать пакет [[http://wiki.gnokii.org gnokii]] и подключенный к системе телефон. В простейшем случае можно использовать возможность консольной утилиты gnokii из пакета gnokii-cli, но при необходимости более сложной автоматизации имеет смысл воспользоваться Perl-модулем [[http://search.cpan.org/dist/GSM-SMS GSM::SMS]] или [[http://www.agouros.de/gnokii/ GSMD::Gnokii]].

Устанавливаем gnokii, для Debian/Ubuntu:

   sudo apt-get install gnokii-cli gnokii-smsd xgnokii

, где gnokii-cli - интерфейс командной строки, gnokii-smsd демон для работы с SMS, а xgnokii - GUI интерфейс. Последние два ставим на свое усмотрение.

Подключаем телефон через USB-порт. Смотрим в /var/log/messages к какому устройству осуществилась привязка (например, /dev/ttyACM0)

Создаем файл конфигурации /home/mc/.gnokiirc

   [global]
   model = AT
   connection = serial
   port = /dev/ttyACM0

где, 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 --identify

   GNOKII Version 0.6.28
   IMEI         : IMEI56565656565656
   Manufacturer : Motorola CE, Copyright 2000
   Model        : GSM900","GSM1800","GSM1900","MO
   Product name : GSM900","GSM1800","GSM1900","MO
   Revision     : R368_G_0B.A0.0FR

Для мониторинга активности:

   gnokii --monitor

Возможности gnokii позволяют достаточно полно контролировать телефон, но нас интересует работа с SMS.

Чтение SMS:

   gnokii --getsms тип_памяти старт стоп

где тип_памяти: SM - для SIM-карты, ME - для внутренней памяти и MT для комбинированных хранилищ, IN - inbox, OU - outbox. Посмотреть какое хранилище используется на телефоне можно командой "gnokii --showsmsfolderstatus"
старт - начальная позиция сообщения
cтоп - конечная позиция сообщения, если не указать будет прочитано одно сообщение, если указать "end" будут выведены все сообщения до конечной позиции

Пример для вывода всех сохраненных SMS:

   gnokii --getsms MT 1 end


Для отправки SMS можно использовать команду:

   echo "текст" | gnokii --sendsms номер

Например:

   echo "тест" | gnokii --sendsms '+79094126426'

   Send succeeded with reference 131!

Другой способ отправки: в комплекте с Perl-модулем SMS::Send поставляется утилита xpl-sender, которую можно использовать не только как пример для написания скриптов, но и отправлять через неё сообщения:

   xpl-sender -m xpl-cmnd -c sendmsg.basic to=+7909344355 body="test"

Вывод содержимого адресной книги:

   gnokii --getphonebook MT 1 end

Адресную книгу можно сохранить, а затем восстановить:

   gnokii --getphonebook MT 1 end --vcard > phonebook.txt
   gnokii --writephonebook --vcard < phonebook.txt


++ Настройка SMS-шлюза

В состав gnokii входит демон [[http://wiki.gnokii.org/index.php/SMSD SMSD]], который позволяет организовать работу полноценного SMS-шлюза, на лету обрабатывающего входящие SMS. Для хранения отправляемых и получаемых сообщений SMSD может использовать СУБД MySQL, PostgreSQL (плагины gnokii-smsd-mysql и gnokii-smsd-pgsql) или файловое хранилище (--module file).

Ставим недостающие пакеты:

   sudo apt-get install gnokii-smsd-mysql mysql-server

Создаем БД

  mysql -u smsgw
  > create database smsgw;

Создаем структуру БД, используя поставляемый в комплекте с gnokii-smsd-mysql пример:

  mysql -u smsgw smsgw < /usr/share/doc/gnokii-smsd-mysql/sms.tables.mysql.sql

в результате будут созданы три простые таблицы inbox, outbox и multipartinbox, структура которых имеет следующий вид:

   CREATE TABLE inbox (
     id int(10) unsigned NOT NULL auto_increment,
     number varchar(20) NOT NULL default '',
     smsdate datetime NOT NULL default '0000-00-00 00:00:00',
     insertdate timestamp DEFAULT CURRENT_TIMESTAMP,
     text text,
     phone tinyint(4),
     processed tinyint(4) NOT NULL default '0',
     PRIMARY KEY  (id)
   );
   CREATE TABLE outbox (
     id int(10) unsigned NOT NULL auto_increment,
     number varchar(20) NOT NULL default '',
     processed_date timestamp DEFAULT 0,
     insertdate timestamp DEFAULT CURRENT_TIMESTAMP,
     text varchar(160) default NULL,
     phone tinyint(4),
     processed tinyint(4) NOT NULL default '0',
     error tinyint(4) NOT NULL default '-1',
     dreport tinyint(4) NOT NULL default '0',
     not_before time NOT NULL default '00:00:00',
     not_after time  NOT NULL default '23:59:59',
     PRIMARY KEY  (id)
   );
   CREATE TABLE multipartinbox (
     id int(10) unsigned NOT NULL auto_increment,
     number varchar(20) NOT NULL default '',
     smsdate datetime NOT NULL default '0000-00-00 00:00:00',
     insertdate timestamp DEFAULT CURRENT_TIMESTAMP,
     text text,
     phone tinyint(4),
     processed tinyint(4) NOT NULL default '0',
     refnum int(8) default NULL,
     maxnum int(8) default NULL,
     curnum int(8) default NULL,
     PRIMARY KEY  (id)
   );
  
Запускаем smsd:

  /usr/sbin/smsd -u smsgw -d smsgw -c localhost -m mysql -f /var/log/smsdaemon.log


где "-u" - имя пользователя БД, "-d" - имя базы, "-с" - хост, а "-m" - модуль хранения.

Отправив теперь SMS на подключенный к компьютеру телефон, smsd сразу перехватит его и запишет в базу.

выполнив "select * from inbox;"  увидим примерно такое:

  | id | number | smsdate | insertdate |text | phone | processed |
  |  1 | +7909343156224 | 2011-01-20 10:12:05 | 20110120130123 | Test | NULL | 0 |

Для отправки сообщения достаточно добавить новую запись в таблицу outbox, smsd сразу его подхватит его и отправит. Например:

   insert into outbox (number,text) values('+7909344355', 'Тест);


В заключение можно отметить, что smsd  может работать без СУБД, используя файловое хранилище. Пример запуска:

   /usr/sbin/smsd -m file -c spool-директория

Для отправки SMS в spool-директории нужно создать файл с любым именем в формате:
   номер
   текст

после успешной отправки файл будет удален.

Через опцию "-u" можно указать путь к скрипту, который будет выполняться при каждом получении SMS. Иначе входящие сообщения будут выводиться в стандартный выходной поток в формате "действие номер дата < текст".

URL:
Обсуждается: https://www.opennet.ru/tips/info/2510.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Прием и отправка SMS в Linux"  +/
Сообщение от m0ps email(ok) on 21-Янв-11, 23:04 
интересно, может куда-нибудь пригодиться
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Прием и отправка SMS в Linux"  +/
Сообщение от Nester on 22-Янв-11, 11:12 
В гит репах появилась возможность работы с sqlite3
Еще бы описали как счет проверить(этой же прогой), вообще была бы сказка :)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Прием и отправка SMS в Linux"  +/
Сообщение от Кэп on 22-Янв-11, 13:41 
http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=gnoki...
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Прием и отправка SMS в Linux"  +/
Сообщение от Petrov Alexandr email on 22-Янв-11, 21:56 
Спасибо за статью, на её основе сделал сегодня для своей фирмы ,вэб сервис, для автоматической отправки
SMS клиентам.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Прием и отправка SMS в Linux"  +/
Сообщение от Amigos on 23-Янв-11, 05:30 
Спасибо. Попробовал - хорошо работает отправка сообщений, чтение/запись контакт-листа, работа с голосовыми вызовами.
Но вот беда - никак не смог прочитать принятые сообщения. Пробовал на Nokia 5500, 5310, 5800 (этих моделей нет в http://wiki.gnokii.org/index.php/Config). На всех одинаково:
user@user-desktop:~$ gnokii --showsmsfolderstatus
GNOKII Version 0.6.29
No. Name                                         Id #Msg
========================================================

user@user-desktop:~$ gnokii --getsms SM 1 end
GNOKII Version 0.6.29
Getting SMS failed (location 1 from SM memory)! (Unknown error - well better than nothing!!)

ЧЯДНТ?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Прием и отправка SMS в Linux"  +/
Сообщение от pavlinux (ok) on 23-Янв-11, 15:51 
Премию дали?
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Прием и отправка SMS в Linux"  +/
Сообщение от Petrov Alexandr email on 23-Янв-11, 18:25 
Живу и работаю в Израиле - делай вывод.
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Прием и отправка SMS в Linux"  +/
Сообщение от zxalexis on 23-Янв-11, 19:19 
Наверное, нокии сразу складывают СМС в память телефона. Попробуй, все-таки, заменить SM на ME или MT.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

9. "Прием и отправка SMS в Linux"  +/
Сообщение от pavlinux (ok) on 23-Янв-11, 22:10 
> Живу и работаю в Израиле - делай вывод.

Что, с тебя вычли за использование телефона? :)

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Прием и отправка SMS в Linux"  +/
Сообщение от Аноним (??) on 23-Янв-11, 23:18 
У smsd ключик -b не работает.
пока на похакал smsd/lowlevel.c:384
-    if (phoneMonitor.supported & PM_FOLDERS)
+    if (1 || phoneMonitor.supported & PM_FOLDERS)

smsd не мог получить старые sms.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Прием и отправка SMS в Linux"  +/
Сообщение от Petrov Alexandr email on 23-Янв-11, 23:18 
Да нет, просто тяжело отрываться от родного провайдера - которого безмолвно годами кормят и
увидеть собственную выгоду. А уж премию дать - это таки как-то не по еврейски.
Мы таки не жадные - мы просто экономные. Да и зачем платить , если лох инициативу проявил!


Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "Прием и отправка SMS в Linux"  +/
Сообщение от Sw00p aka Jerom on 24-Янв-11, 02:02 
а с протоколом smpp он работает ? (ну типа кеннела)

или только с трубками ?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Прием и отправка SMS в Linux"  +/
Сообщение от Amigos on 24-Янв-11, 07:47 
Пробовал (SM|ME|MT|IN) - результат одинаковый.
gnokii --showsmsfolderstatus должна бы показать в какой памяти сколько сообщений находится, но у меня не работает.
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

14. "Прием и отправка SMS в Linux"  +/
Сообщение от uldus (ok) on 24-Янв-11, 11:56 
> а с протоколом smpp он работает ? (ну типа кеннела)

Для SMPP удобно использовать Perl-модуль Net::SMPP (http://search.cpan.org/dist/Net-SMPP/), там в комплекте есть полезная утилита smsc.pl.

Еще есть Python-модуль pySMPP (http://pysmpp.sourceforge.net/) и Си-шная библиотека C-SMPP (http://c-smpp.movilgate.com/), но про них ничего сказать не могу - не пользовался, да и не обновляются эти проекты уже очень давно. Про Kannel (http://www.kannel.org/) вы сами уже написали.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

15. "Прием и отправка SMS в Linux"  +/
Сообщение от Zl0 (ok) on 24-Янв-11, 12:58 
Весьма весьма жизненная статья. Спасибо.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

16. "Прием и отправка SMS в Linux"  +/
Сообщение от Владислав email(??) on 25-Янв-11, 18:42 
Приобрел комплект megafonа - Интернет старт с USB модемом huawei E1550 + ТП для отправки SMS. Поставил gammu-1.28.0. Прикрутил скрипт для контроля баланса.
все пашет и радует. А телефон к линуксу который с блоком питания - это не совсем надежно. а с зарядкой от USB телефон будет стоить гораздо дороже модема E1550.
С UTF-8 проблем нет.
Из файла README
================
Gammu All Mobile Management Utilities
=====================================

Gammu is library and command line utility for mobile phones. It is
released under GNU GPL version 2.

It has been initiated by Marcin Wiacek and other people. Originally the
code was based on Gnokii <http://www.gnokii.org> and later MyGnokii
<http://www.mwiacek.com> projects. Gammu  was former (up to version
0.58) called MyGnokii2.

Currently the project is lead by Michal Cihar <michal@cihar.com> with
help of many contributors.


More information
================

On <http://www.gammu.org/> there is wiki and bug tracker, current Gammu
maintainer keeps information available on <http://wammu.eu/gammu/>.
=================================

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

17. "Прием и отправка SMS в Linux"  +/
Сообщение от Анон on 28-Янв-11, 06:55 
Подскажите какую-нибудь дешевую модель нокии или еще какого аппарата, который стабильно будет поддерживать отправку SMS через gnokii? Хочу на этой основе сделать удаленное управление серверами, когда оные отваливаются от сети.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

18. "Прием и отправка SMS в Linux"  +/
Сообщение от Анон on 28-Янв-11, 16:22 
Любой старый сименс(не банки) и старые сониериксоны. Идеально подходят для этого. (Легко подключить коннектор и зарядку одновременно) С ноклами придется активно полюбиться с гнездом.
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

19. "Прием и отправка SMS в Linux"  +/
Сообщение от edo (ok) on 28-Янв-11, 22:44 
а почему не smstools?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

20. "Прием и отправка SMS в Linux"  +/
Сообщение от tim email(??) on 02-Дек-11, 22:14 
Всё установил. Но вот проблема:
# smsd -u sms -p ****** -d sms -c localhost -m mysql
Cannot stat file sms!

HELP :(

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

21. "ошибка при иденитификации"  +/
Сообщение от Евгений email(??) on 04-Апр-12, 14:10 
root@tehservis:~/.config/gnokii# gnokii --identify
GNOKII Version 0.6.30
IMEI        : 356499042512073
Manufacturer: Cinterion
No flags section in the config file.
Model       : MC52iR3
Product name: MC52iR3
Revision    : REVISION 01.301
root@tehservis:~/.config/gnokii#

как избавиться от ошибки: No flags section in the config file.
в данном сообщении ?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

22. "Прием и отправка SMS в Linux"  +/
Сообщение от unit4 email on 15-Мрт-13, 08:57 
Удалось победить? Аналогичная проблема, собирал из сорцев.
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

23. "Прием и отправка SMS в Linux"  +/
Сообщение от unit4 email on 15-Мрт-13, 12:23 
> Удалось победить? Аналогичная проблема, собирал из сорцев.

Я победил только принудительно указав ключик -m

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

24. "Прием и отправка SMS в Linux"  +/
Сообщение от Владимир666 email on 28-Ноя-13, 08:44 
Может быть кто-то сталкивался с подобной проблемой ранее, дело вот в чем:
Ubuntu 13.04 на ней установлен Gnokii раньше все работало прекрасно, но в один момент смс-ки перестали идти,
что я делал : ввел команду
Gnokii --monitor

Вышло примерно следующее


Развернуть/свернуть скрытый текст.
Network: Beeline, Российская Федерация (250 99)
LAC: 0000 (0), CellID: 00000000 (0)
RFLevel: -1
Battery: 96
Power Source: Battery
Phone: Used 0, Free 0
LD: Used 0, Free 0
ON: Used 0, Free 10
RC: Used 0, Free 10
SMS Messages: Unread 0, Number 8
CALL0: IDLE
CALL1: IDLE
RFLevel: 12
Battery: 96
Power Source: Battery
SIM: Used 0, Free 110
Phone: Used 0, Free 0
LD: Used 0, Free 0
MC: Used 5, Free 5
ON: Used 0, Free 1
RC: Used 0, Free 1
CALL0: IDLE
CALL1: IDLE
RFLevel: 12
Battery: 96
Power Source: Battery
DC: Used 0, Free 0
LD: Used 0, Free 0
MC: Used 5, Free 5
RC: Used 0, Free 1
CALL0: IDLE
CALL1: IDLE
Battery: 96
SIM: Used 0, Free 110
Далее ввожу команду
invoke-rc.d smsd stop

Жду
Далее ввожу команду
invoke-rc.d smsd start

Через некоторое время прилетает туча смс-сок которые должны были приходить по одной , но покакой-то причине зависли,
Причём некоторые смс абсолютно неадекватные "набор знаков\букв"
Идут смс-ки примерно минут 5-10, далее опять все зависает и пока не остановишь и не стартанешь заного все висит, хотя мониторинг идет,
Пробовал такую команду
echo "Проверка gnokii" | gnokii --sendsms '+79195856661'

Выдает следующее
root@server:~# echo "Проверка gnokii" | gnokii --sendsms '+79195856661'
GNOKII Version 0.6.31
Cannot read the SMSC number from your phone. If the sms send will fail, please use --smsc option explicitely giving the number.
SMS Send failed (Command timed out.)

смс-ка приходит на телефон, в чем тут дело не понимаю, может кто знает подскажите ?

Через какое-то время когда снова все зависло ввожу
root@server:~# echo "Проверка gnokii" | gnokii --sendsms '+79195856661'

В ответ:

GNOKII Version 0.6.31
SMS Send failed (Unknown error - well better than nothing!!)

СМС-ка на телефон не пришла.

Есть мысль что что-то с памятью SM но как это проверить\возможно очистить я не знаю ?

После зависания мониторинг пишет следующее:


Развернуть/свернуть скрытый текст.
root@server:~# gnokii --monitor
GNOKII Version 0.6.31
Entering monitor mode...
Network: unknown, unknown ()
LAC: 0000 (0), CellID: 00000000 (0)
RFLevel: -1
Battery: 96
Power Source: Battery
SIM: Used 0, Free 1
EN: Used 0, Free 0
FD: Used 0, Free 6
LD: Used 0, Free 10
MC: Used 5, Free 5
ON: Used 0, Free 1
RC: Used 0, Free 0
CALL0: IDLE
CALL1: IDLE
RFLevel: -1
Battery: 96
Power Source: Battery
SIM: Used 0, Free 10
DC: Used 0, Free 0
EN: Used 0, Free 10
FD: Used 0, Free 6
LD: Used 0, Free 10
MC: Used 5, Free 5
ON: Used 0, Free 1
RC: Used 0, Free 10
CALL0: IDLE
CALL1: IDLE
RFLevel: -1
Battery: 96
Power Source: Battery
Phone: Used 0, Free 0
DC: Used 0, Free 10
^Z
[4]+ Stopped gnokii --monitor
root@server:~#

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру