Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> comms/scmxx

smsgate с помощью scmxx

Автор: kmb.


Задача с помощью GSM-модема Siemens MC35i настроить sms-шлюз.
В случае чего человек отправляет письмо на определенный почтовый ящик например sms@host.org,
после чего определенным людям приходит sms.

Подключаем модем, через COM-порт. FreeBSD остальное сделает за нас :)

#uname -a
FreeBSD 7.0-RELEASE

Смотрим:
# ls /dev/

Видим:
cuad0
cuad0.init
cuad0.lock

Радуемся. :)
Находим нужный софт:
# cd /usr/ports
/usr/ports# make search name=scmxx
Port:   gscmxx-0.4.1_4
Path:   /usr/ports/comms/gscmxx
Info:   A graphical frontend for scmxx
Maint:  svmohr@rm6.net
B-deps: [CUT]
WWW:    http://gscmxx.sourceforge.net/

Port:   scmxx-0.9.0_1
Path:   /usr/ports/comms/scmxx
Info:   Data exchange utility for Siemens mobile phones
Maint:  janos.mohacsi@bsd.hu
B-deps: gettext-0.17_1 gmake-3.81_3 libiconv-1.11_1
R-deps: gettext-0.17_1 libiconv-1.11_1
WWW:    http://www.hendrik-sattler.de/scmxx/

Графиков на сервере нету, выбираем scmxx-0.9.0_1. %)
/usr/ports# cd /usr/ports/comms/scmxx

Без каких либо настроек:
/usr/ports/comms/scmxx# make install clean
/usr/ports/comms/scmxx# cd /usr/local
/usr/local# mkdir sms
/usr/local# cd sms
/usr/local/sms# touch sms.sh
/usr/local/sms# touch smsget.sh
/usr/local/sms# touch smssend.sh
/usr/local/sms# touch sms.txt

Русский ман по scmxx, можно найти тут.

Содержимое самих скриптов.
sms.sh:
#!/bin/sh
# Запуск скрипта получения только сообщения 
# из файла почты и сохранения его в отдельный файл
/usr/local/sms/smsget.sh /var/mail/sms > /usr/local/sms/sms.txt
# Если файл не имеет нулевого размера, запускаем скрипт отправки SMS
if [ -s /usr/local/sms/sms.txt ]; then 
/usr/local/sms/smssend.sh
# Обнуляем и почту и текст, который уже был отправлен
/dev/null/> /usr/local/sms/sms.txt
/dev/null/> /var/mail/sms
fi
# Нужно реализовать коды обработки, 
# на тот случай если модем "откажется" отправлять сообщение

smsget.sh:
#!/bin/sh
# Удаление заголовков из электронных писем и новостей,
# т.е. до первой пустой строки
if [ $# -eq 0 ]; then
# ==> Если входной аргумент не задан (файл), то выводить результат на stdin.
sed -e '1,/^$/d' -e '/^[        ]*$/d'
# --> Удалить пустые строки и все строки предшествующие им
else
# ==> Если аргумент командной строки задан,
# то использовать его как имя файла.
for i do
sed -e '1,/^$/d' -e '/^[        ]*$/d' $i
done
fi

smssend.sh:
#!/bin/sh
# Name
/usr/local/bin/scmxx --device /dev/cuad0 --baud 9600 \ 
--reset --system-charset koi8-r --unicode --send --sms --direct \ 
--number=+7xxxxxxxxx --send /usr/local/sms/sms.txt

Если у вас будут различные приписки в конце sms, то можно видоизменить последнюю часть:

--send /usr/local/sms/sms.txt

на

--text "`cat /usr/local/sms/sms.txt`"

Возможно у вас будет /dev/cuadN, тогда исправляем на то что нужно.

Добавляем или исправляем /etc/rc.conf:
sendmail_enable="YES"

                       
Смотрим имя машины:
# hostname
ns2.host.org

Прописываем на почтовом сервере, что используется у сотрудников, в файле hosts, либо добавляем запись в ДНС:
ns2.host.org IP_smsgate

Закидываем в /etc/crontab(выполняется каждые 5 минут)
*/5     *       *       *       *       root    /usr/local/sms/sms.sh

Не забываем, рестартовать cron.
Впринципе всё. :)
Да, пользователя добавляем.
# adduser
Username: sms
Full name: sms
Uid (Leave empty for default):
Login group [sms]:
Login group is sms. Invite sms into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]:
Home directory [/home/sms]: /dev/null
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username   : sms
Password   : *****
Full Name  : sms
Uid        : 1002
Class      :
Groups     : sms
Home       : /dev/null
Shell      : /bin/sh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (sms) to the user database.
Add another user? (yes/no): no
Goodbye!

p.s. В отправляемых письмах лучше отключать Content-Transfer-Encoding: quoted-printable в The Bat по дефолту стоит, переключить на "Без кодирования". Текст отправляемого сообщения должен быть в KOI8-R.
(c) Observer.



размещено: 2009-01-15,
последнее обновление: 2009-01-20,
автор: kmb


Le1, 2009-01-27 в 14:01:27

Отличная темя, интересная статья, спасибо автору.

Shurup, 2009-01-27 в 20:06:08

брикольно получилось, осталось сделать как через icq смски отправлять

Aero, 2011-01-14 в 12:21:58

Shurup, интересно придумал через аську, а есть тузлы ?



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0599 секунд
Из них PHP: 21%; SQL: 79%; Число SQL-запросов: 86 шт.
Исходный размер: 23370; Сжатая: 6261