Linux как отправить смс

Отправка SMS из под Shell

Как-то раз пришлось мне собирать gentoo на очень древнем железе, и меня постоянно мучил вопрос: «Как же сделать так, что-бы знать когда закончится компиляция всех пакетов и я смогу приступить к дальнейшей работе с ПК?» В поисках истины нашел наиболее подходящее для меня решение это отправка SMS уведомлений.

Тут есть 2 решения:
1. Отправка писем на выделенный вашим ОПСОСом ящик (у мегафона эта услуга называлась «Электронная почта GSM»)
2. Отправка писем с помощью скрипта использующего функции mailagent’a.

С первым способом все просто:
Вся суть этого метода заключается в том что-бы подключить данную услугу, получить адрес предоставленной почты (как правило вида @), и настроить отправку email на данный адрес. Все сообщения отправленные на него будут приходить в виде смс на ваш телефон. Но к сожалению не все операторы предоставляют такую услугу. Первым делом вам необходимо уточнить предоставляет ли ваш ОПСОС ее или нет.

Поэтому мы переходим ко второму более универсальному методу:
Скрипт был найден давным давно в просторах интернета, имя автора я не помню, а все ссылки ведущие на страницу уже битые. Написан на python и работает через сервис mail.ru.

Хоть я и назвал метод более универсальным, но в любую страну отправить смс не получится. Вот список стран и операторов доступных для отправки: help.mail.ru/agent-help/sms/region
Максимальная длина сообщения на русском языке — 36 символов, а латиницей — 116.
Так же ограничено и максимальное количество — 10 СМС в день, и не больше одного сообщения в минуту.

Распаковываем архив.
В нем находится оригинальный скрипт send.py, с помощью которого можно отправлять смс, и небольшой мой скрипт noty_send.sh для облегчения отправки уведомлений.
При вызове send.py без параметров он сразу же выдаст необходимую для отправки информацию:

$ python sms_send/send.py Usage: send.py [options] Options: -h, --help show this help message and exit -n PHONE, --number=PHONE Phone number. Ex: +79221412345 -t TEXT, --text=TEXT Sms content -l LOGIN, --login=LOGIN Email address -p PASSWD, --password=PASSWD Your password 

Что касается моего скрипта: открываем его в текстовом редакторе

#!/bin/bash num=+71234567890 log=qwe@mail.ru pas=******* msg=$1 python ./send.py -l $log -p $pas -n $num -t "$msg" exit 0 

Меняем num на свой номер, log на свою почту и pas на пароль от нее. Так же вы можете присвоить переменной msg статическую фразу в духе «Все готово, Хозяин» что бы вызывать скрипт без параметра.

Настало время проверить скрипт:

Источник

Прием и отправка SMS в Linux

Прием и отправка SMS в Linux Для организации автоматизации приема и отправки SMS в Linux можно использовать пакет gnokii и подключенный к системе телефон. В простейшем случае можно использовать возможность консольной утилиты gnokii из пакета gnokii-cli, но при необходимости более сложной автоматизации имеет смысл воспользоваться Perl-модулем GSM::SMS или GSMD::Gnokii.

Читайте также:  Системное администрирование linux карлинг

Устанавливаем 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 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 позволяют достаточно полно контролировать телефон, но нас интересует работа с SMS.

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

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

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

Для отправки 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

В состав gnokii входит демон 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 пример:

в результате будут созданы три простые таблицы 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 -u smsgw -d smsgw -c localhost -m mysql -f /var/log/smsdaemon.log

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

Читайте также:  How to rename folder in linux

Отправив теперь 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 может работать без СУБД, используя файловое хранилище. Пример запуска:

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

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

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

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

Дополнение: Вместо gnokii можно использовать интенсивно развивающийся форк gammu, содержащий поддержку некоторых дополнительных телефонов.

Источник

Отправка бесплатного sms сообщения в linux

image

UPD: Рыская на просторах интернета набрел на новый более простой способ, без танцев с питоном( а можно и с ним если необходимо).
Оказалось что сайт sms.ru уже более полугода предоставляет Бесплатные СМС для программистов.

Регистрация проходит на номер мобильного телефона, никаких смс отправлять для этого не нужно. На номер придет только проверочный код.

После регистрации можно отправлять до 60смс в день на свой номер, указанный при регистрации. Уже почти месяц как перевел все свои сервисы с гугла на данный сервис. Радует отсутствие минутной задержки перед отправкой и возможность получения статуса сообщения.

Отправить можно разными способами, на сайте, в разделе «Программистам» есть множество готовых примеров:

  • HTTP
  • curl для командной строки (UTF-8)
  • php (с включенным модулем curl)
  • php (без curl)
  • php (усиленная авторизация)
  • PERL (усиленная авторизация)
  • Python

sms.ru/sms/send?api_id=xxxx-xxxx-xxxxx-xxxx-xxxx&to=номер_телефона&text=hello+world
,где - xxxx-xxxx-xxxxx-xxxx-xxxx это id доступный после регистрации.

Читайте также:  Linux running services as user

Так же есть возможность пересылки email на смс. В разделе «Почта sms.ru» можно настроить свой почтовый ящик name sms.ru письма на который будут пересылаться на телефон в виде смс. При включенной опции «обрезать до 1смс» все сообщения на свой номер будут бесплатны.

image

В google calendar есть очень интересная функция — уведомления. Благодаря ей можно получать бесплатные смс на телефон о событиях в календаре. Поддерживается очень много стран и операторов сотовой связи:

  • JLLC Mobile TeleSystems
  • VELCOM
  • Билайн
  • МегаФон
  • МТС
  • Скай Линк

Умельцы с форума wl500g.info написали парочку скриптов которые шлют любые смс через google calendar. Задержка составляет всего 1 минуту, а ограничение 20 смс в сутки пока обойти не удалось.

Для начала нужно зарегистрироваться в gmail.

В настройках google календаря, в пункте «настройка для мобильных устройств» ввести и активировать свой мобильный телефон. Номер телефона можно ввести только один, но впоследствии его можно будет сменить.

Дальше устанавливаем python и bc

sudo apt-get install python
sudo apt-get install bc

Качаем gdata-python-client питон клиент для календаря. И устанавливаем его.

wget gdata-python-client.googlecode.com/files/gdata-2.0.13.tar.gz
tar xfv gdata-2.0.13.tar.gz
rm gdata-2.0.13.tar.gz
cd gdata-2.0.13
python setup.py install

Создаем папку /opt/etc/calendarSMS и кладем в нее питоновский скрипт, скачанный по ссылке. (если папка другая — то нужно поправить пути в файле) Я исправил все на /etc/calendarSMS

В архиве по ссылке выше лежит конфиг файл для скрипта, его кладем рядом и правим.

[sendsms]
user: vassio
pw: *******
starttime: 120
endtime: 180
remindertime: 1
calendar: fafgttkq8ed2idfgfhdfidn6eok@group.calendar.google. com
attempt:11
delay:5

user аккаунт google
pw пароль к аккаунту google
starttime указывает через какое время будет начато мероприятие(в секундах)
endtime указывает через какое время будет закончено мероприятие(в секундах)
remindertime время напоминания(в минутах)
calendar Идентификатор календаря (например fafgttkq8ed2idfgfhdfidn6eok@group.calendar.google. com). Можно посмотреть в настройках календаря — подробные сведения конкретного календаря, поле «адрес календаря» и там справа в скобках
attempt Максимальное количество попыток установить новое напоминание в календарь
delay Время ожидания между попытками

Дальше нужно скачать и положить файл sendsms в туже папку /opt/etc/calendarSMS (если меняли путь то не забудьте поправить его везде)

Для синхронизации времени перед каждой отправкой в примере используется ntpclient. Он используется только в предыдущем пункте. В Убунте я исправил его на ntpdate и все заработало.

Не забываем дать права на запуск

chmod 777 /opt/etc/calendarSMS/sendsms

Вот и все, теперь что бы отправить себе sms набираем

sendsms [-inet] [-?] [-sync] [сообщ]
-inet позволяет перед отправкой проверить доступ к интернету(google.com), пока интернет не появится сообщение не отправится
-? эта справка
-sync перед отправкой синхронезировать время
сообщ сообщение которое будет отправлено

Пример: /opt/etc/calendarSMS/sendsms -inet -sync Привет Мир!

  • Смс о завершившийся закачке в торрент клиенте
  • Смс о сработке датчика движения в системах видео наблюдения
  • Смс о достижении определенного порога в наблюдаемой величине
  • Смс о сбое канала связи/сервера/программы
  • и т.д. и т.п.

Источник

Оцените статью
Adblock
detector