LINUX.ORG.RU
решено ФорумAdmin

Отправка sms из скриптов (gnokii, smstools, прочее)

 , ,


3

2

Задача банальная - отправлять смс из скриптов через usb-модем.

Первое вроде бы рабочее решение - gnokii, работает, даже с русскими буковками нет проблем, но в случае одновременного вызова из нескольких скриптов, смс не отправляется, модем зависает(судя по всему, идут команды в перемешку, модему плохеет). Тривиальный скрипт для воспроизвдения:

#!/bin/bash

echo превед | gnokii --config /etc/sms.conf --sendsms +ZYYYYYYYYYY &
echo превед | gnokii --config /etc/sms.conf --sendsms +ZYYYYYYYYYY &

Второй вариант - smstools (smsd). Русские буковки в референсном скрипте /usr/share/doc/smstools/examples/scripts/sendsms не работают(ну это ладно, разберусь что там с UCS-2 не так). Основная проблема - задержка перед отправкой. Судя по всему, эта хрень периодически(раз в минуту или около того) сканирует папку /var/spool/sms/checked . Такая задержка недопустима. За то есть очередь, нет проблемы с конфликтом записи в /dev/ttyUSBX. Можно ли заставить smsd чаще сканировать папку checked, чтобы минимизировать задержку перед отправкой.

Какие ещё есть варианты? Или сами запиливаете свою очередь и выгребаете из неё в gnokii? Желания изобретать велосипед нет, надеюсь на вашу помощь, коллеги.


Gnokii без перевода в бэкграунд, а так вообще каннел и договор с смс-провайдерами.

leave ★★★★★ ()

Не знаю, почему gnokii ведёт себя так нехорошо.
gammu, который его форк, вываливается с кодом ошибки 102, если пытаешься что-либо сделать параллельно (/dev/ttyUSBx).

ABW ★★★★ ()

Попробуйте так:

#!/bin/bash

echo превед | gnokii --config /etc/sms.conf --sendsms +ZYYYYYYYYYY
echo превед | gnokii --config /etc/sms.conf --sendsms +ZYYYYYYYYYY

Т.е. убрать оконечные амперсанды из скрипта. Чтобы команды не переводились в фоновый режим и работали не параллельно, а одна за другой: пока первое не отправится, второе не вызовется на выполнение; как-то так.

Infra_HDC ★★★★★ ()
Ответ на: комментарий от Infra_HDC

Спасибо, КЭП! Но это был пример как повторить проблему(для тех, кто потенциально может столкнуться с такой же ситуацией). Дело в том, что отправка СМС может быть инициирована параллельно(т.е. их рассылает не один скрипт в общем случае).

Разобрался с задержкой в smstools, нашёл как сканировать папку с очередью раз в секунду. Осталось UCS2 победить.

srg666 ()
Ответ на: комментарий от srg666

gnokii - умирающий проект.

Его наследник - gammu. В нем добавлена поддержка многих USB-модемов. Возможно в нем твоя проблема с UCS2 решена.

Там же есть и smsd со спулом.

vel ★★★★★ ()
Ответ на: комментарий от vel

В gnokii никаких проблем с UCS2 не было. Проблема была с UCS2 с smsd и связана с тем, что внутри dash/bash-скриптов строки с UCS2 каким-то неведомым образом портились после оператора `` (2-байтная латиница почему-то превращалась в однобайтную). Немного подправил стандартные скрипты-обёртки и теперь всё хорошо. smsd(smstools) вроде не умирает, поэтому gammu не стал смотреть

srg666 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.