Smstools или прием и передача sms на сервере: различия между версиями
imported>Vix Нет описания правки |
imported>Vix |
||
(не показано 9 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
==Скрипт отправки sms на заданный почтовый ящик:== | |||
#!/bin/bash | #!/bin/bash | ||
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | ||
MAIL_FROM=smstools@ | MAIL_FROM=smstools@myhost.ru | ||
MAIL_TO= | MAIL_TO=admin@myhost.ru | ||
PATHSMS="/var/spool/sms/incoming"; | PATHSMS="/var/spool/sms/incoming"; | ||
LISTSMS=( `ls -x -c $PATHSMS` ); | LISTSMS=( `ls -x -c $PATHSMS` ); | ||
Строка 12: | Строка 13: | ||
SENDER_AGENT="mail"; | SENDER_AGENT="mail"; | ||
## | ## make messages | ||
function makeMessage() { | function makeMessage() { | ||
if sed -e '/^$/ q' < "$MESSAGE" | grep -q "^Alphabet: UCS2"; | if sed -e '/^$/ q' < "$MESSAGE" | grep -q "^Alphabet: UCS2"; | ||
Строка 44: | Строка 45: | ||
} | } | ||
## test enable sms | ## test enable sms mesages | ||
if [ ! "$(ls -x $PATHSMS)" ] | if [ ! "$(ls -x $PATHSMS)" ] | ||
then | then | ||
exit 0 | |||
fi | fi | ||
## executor | ## executor | ||
Строка 57: | Строка 58: | ||
ex_index=$(($ex_index-1)); | ex_index=$(($ex_index-1)); | ||
done | done | ||
## delete all sms | ## delete all sms! - Attention! this option removes your SMS, if you configure script, comment out this command. | ||
rm -f $PATHSMS/* | ##rm -f $PATHSMS/* | ||
* скрипт ставим в crontab и дальше все происходит автоматически... | |||
==Использование Gammu== | |||
... | |||
Работа с Gammu начинается с настройки. Проще всего это сделать при помощи утилиты, которая запускается командой | |||
gammu-config. | |||
Она поинтересуется «портом» (в нашем случае сюда попадает уже знакомый путь) | |||
/dev/tty.HUAWEIMobile-Pcui | |||
типом и скоростью соединения, моделью (если ничего подходящего нет, стоит выбрать at — в этот тип входит любое устройство, поддерживающее набор команд Hayes) и запросит несколько менее интересных деталей.<br> | |||
Введенная информация будет сохранена в настроечном файле | |||
~/.gammurc, | |||
который при необходимости можно отредактировать в любом текстовом редакторе.<br> | |||
...<br> | |||
Для отправки сообщения служит команда gammu sendsms TEXT <номер телефона>.<br> | |||
Сам текст сообщения нужно направить команде по механизму pipes. Это упрощает отправку по СМС текста, который является результатом работы другой программы. | |||
echo "Привет" | gammu sendsms TEXT +79295556924 | |||
В Gammu предусмотрено несколько способов чтения сообщений, но для того, чтобы рассмотреть их все, здесь просто нет места.<br> | |||
Ограничимся одной, самой простой командой. Она выводит все СМС, хранящиеся в памяти устройства. | |||
gammu getallsms | |||
Location 1, folder "Inbox", SIM memory, Inbox folder | |||
SMS message | |||
SMSC number : "+79037333332" | |||
Sent : Fri Dec 18 21:17:17 2009 +0300 | |||
Coding : Unicode (no compression) | |||
Remote number : "Beeline" | |||
Status : Read | |||
User Data Header : Concatenated (linked) message, ID (16 bit) 8444, part 1 of 2 | |||
Общее время Ваших разговоров 4 мин. | |||
Нередко вместо выполнения команды Gammu жалуется на проблемы. Ошибка «Error opening device. Unknown, busy or no permissions» может свидетельствовать о том, что соединение с модемом захватила какая-то другая программа. Возможен и другой вариант: GSM-модемы, как оказалось, не отличаются крепкими нервами и под градом команд склонны виснуть. Чтобы привести их в чувство, устройство приходится вытаскивать из порта USB и затем втыкать снова. | |||
Еще один важный компонент Gammu — это SMS Daemon, программа, которая одним махом решает три четверти задачи построения сервера для взаимодействия по СМС. SMS Daemon работает в фоне, поддерживает контакт с модемом и при получении сообщения выполняет заданные действия. К слову, с перезагрузкой подвисшего модема он тоже справляется. | |||
Настройка SMS Daemon — относительно сложная задача, требующая ручного редактирования настроечного файла. В нем должен появиться блок [smsd], содержащий настройки сервиса хранения СМС и, если это необходимо, задающий путь к обработчику получаемых сообщений. | |||
Сервис хранения СМС ценнее всего. SMS Daemon способен автоматически записывать полученные сообщения в базу данных (поддерживаются среди прочего SQLite, MySQL, PostgreSQL и MS SQL) или складывать в виде файлов в специальную папку. | |||
Обработчик представляет собой программу или скрипт пользователя, автоматически запускаемый после приема сообщения. Информация передается обработчику через переменные окружения. Переменная SMS_MESSAGES содержит число полученных сообщений, значение SMS_1_NUMBER соответствует телефонному номеру отправителя, а SMS_1_TEXT — тексту сообщения. | |||
SMS Daemon можно использовать и для отправки сообщений, хотя это несколько выбивается из круга его обязанностей. Это делается при помощи команды gammu-smsd-inject, действующей в точности как gammu send-sms. | |||
echo "Привет" | gammu-smsd-inject TEXT +79295556924 | |||
... | |||
* [https://xakep.ru/2015/04/07/195-sms/ взято тут] | |||
'''ИСТОЧНИКИ:''' | |||
<hr> | |||
* [http://mrcat.ru/sms-send-receive полезное по настройке] | * [http://mrcat.ru/sms-send-receive полезное по настройке] | ||
* [https://jpsoft.com/help/sendhtml.htm?anchor=subject для почтовых агентов] | * [https://jpsoft.com/help/sendhtml.htm?anchor=subject для почтовых агентов] | ||
* [http://linuxoidmemos.blogspot.com/2013/04/sms-huawei-e153u-1.html Читаем SMS из модема Huawei E153u-1] |
Текущая версия от 18:02, 5 декабря 2018
Скрипт отправки sms на заданный почтовый ящик:
#!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin MAIL_FROM=smstools@myhost.ru MAIL_TO=admin@myhost.ru PATHSMS="/var/spool/sms/incoming"; LISTSMS=( `ls -x -c $PATHSMS` ); TEXT=; MESSAGE=; ## default agent mail, else mutt SENDER_AGENT="mail"; ## make messages function makeMessage() { if sed -e '/^$/ q' < "$MESSAGE" | grep -q "^Alphabet: UCS2"; then TEXT="$(sed -e '/^$/ q' < "$MESSAGE" | sed -e 's/Alphabet: UCS2/Alphabet: UTF-8/g')"; TEXT="$(echo -e $TEXT"\n"$(sed -e '1,/^$/ d' < "$MESSAGE" | iconv -f UNICODEBIG -t UTF-8))"; else TEXT="$(sed -e '1,/^$/ d' < "$MESSAGE")"; fi NUM="$(echo $TEXT|grep -E '^From:'|sed -r 's/.*From_SMSC: //; s/S.*//')"; sendMessage } ## send messages function sendMessage() { if [ "$SENDER_AGENT" = "mail" ] then SUBJECT='Входящее SMS сообщение с номера:'$NUM TEXTBODY=$TEXT echo -e $TEXTBODY|mailx -a "Content-Type: text/plain; charset=UTF-8" -s "$SUBJECT" $MAIL_TO fi if [ "$SENDER_AGENT" = "mutt" ] then SUBJECT='Входящее SMS сообщение с номера:'$NUM TEXTBODY=$TEXT echo -e $TEXTBODY|mutt -s "$SUBJECT" $MAIL_TO fi } ## test enable sms mesages if [ ! "$(ls -x $PATHSMS)" ] then exit 0 fi ## executor ex_index=$((${#LISTSMS[@]}-1)); while [ $ex_index -gt -1 ] do MESSAGE="$PATHSMS"/"${LISTSMS[$ex_index]}"; makeMessage ex_index=$(($ex_index-1)); done ## delete all sms! - Attention! this option removes your SMS, if you configure script, comment out this command. ##rm -f $PATHSMS/*
- скрипт ставим в crontab и дальше все происходит автоматически...
Использование Gammu
... Работа с Gammu начинается с настройки. Проще всего это сделать при помощи утилиты, которая запускается командой
gammu-config.
Она поинтересуется «портом» (в нашем случае сюда попадает уже знакомый путь)
/dev/tty.HUAWEIMobile-Pcui
типом и скоростью соединения, моделью (если ничего подходящего нет, стоит выбрать at — в этот тип входит любое устройство, поддерживающее набор команд Hayes) и запросит несколько менее интересных деталей.
Введенная информация будет сохранена в настроечном файле
~/.gammurc,
который при необходимости можно отредактировать в любом текстовом редакторе.
...
Для отправки сообщения служит команда gammu sendsms TEXT <номер телефона>.
Сам текст сообщения нужно направить команде по механизму pipes. Это упрощает отправку по СМС текста, который является результатом работы другой программы.
echo "Привет" | gammu sendsms TEXT +79295556924
В Gammu предусмотрено несколько способов чтения сообщений, но для того, чтобы рассмотреть их все, здесь просто нет места.
Ограничимся одной, самой простой командой. Она выводит все СМС, хранящиеся в памяти устройства.
gammu getallsms Location 1, folder "Inbox", SIM memory, Inbox folder SMS message SMSC number : "+79037333332" Sent : Fri Dec 18 21:17:17 2009 +0300 Coding : Unicode (no compression) Remote number : "Beeline" Status : Read User Data Header : Concatenated (linked) message, ID (16 bit) 8444, part 1 of 2 Общее время Ваших разговоров 4 мин.
Нередко вместо выполнения команды Gammu жалуется на проблемы. Ошибка «Error opening device. Unknown, busy or no permissions» может свидетельствовать о том, что соединение с модемом захватила какая-то другая программа. Возможен и другой вариант: GSM-модемы, как оказалось, не отличаются крепкими нервами и под градом команд склонны виснуть. Чтобы привести их в чувство, устройство приходится вытаскивать из порта USB и затем втыкать снова.
Еще один важный компонент Gammu — это SMS Daemon, программа, которая одним махом решает три четверти задачи построения сервера для взаимодействия по СМС. SMS Daemon работает в фоне, поддерживает контакт с модемом и при получении сообщения выполняет заданные действия. К слову, с перезагрузкой подвисшего модема он тоже справляется.
Настройка SMS Daemon — относительно сложная задача, требующая ручного редактирования настроечного файла. В нем должен появиться блок [smsd], содержащий настройки сервиса хранения СМС и, если это необходимо, задающий путь к обработчику получаемых сообщений.
Сервис хранения СМС ценнее всего. SMS Daemon способен автоматически записывать полученные сообщения в базу данных (поддерживаются среди прочего SQLite, MySQL, PostgreSQL и MS SQL) или складывать в виде файлов в специальную папку.
Обработчик представляет собой программу или скрипт пользователя, автоматически запускаемый после приема сообщения. Информация передается обработчику через переменные окружения. Переменная SMS_MESSAGES содержит число полученных сообщений, значение SMS_1_NUMBER соответствует телефонному номеру отправителя, а SMS_1_TEXT — тексту сообщения.
SMS Daemon можно использовать и для отправки сообщений, хотя это несколько выбивается из круга его обязанностей. Это делается при помощи команды gammu-smsd-inject, действующей в точности как gammu send-sms.
echo "Привет" | gammu-smsd-inject TEXT +79295556924
...
ИСТОЧНИКИ: