Настройка gnokii
Необходимо указать:
- port — порт, через который выполнено подключение телефона;
- model — название внутреннего драйвера gnokii для доступа к телефону (или AT, если телефон поддерживает AT-команды);
- connection — способ соединения телефона с компьютером (serial/irda/bluetooth).
Пример конфигурационного файла gnokii.
Подключен мобильный телефон Sony Ericcson (интерфейс AT-команд); подключение выполнено через USB-кабель.
%# grep -v ^# /etc/gnokiirc | grep -xv '' [global] port = /dev/ttyACM0 model = AT initlength = default connection = serial use_locking = yes serial_baudrate = 19200 smsc_timeout = 10 [gnokiid] bindir = /usr/sbin/ [connect_script] TELEPHONE = 12345678 [disconnect_script] [logging] debug = off rlpdebug = off xdebug = off
Работа с SMS
Получение SMS
%# gnokii --getsms ME 1 GNOKII Version 0.6.14 1. Inbox Message (read) Date/time: 19/06/2007 16:26:32 +0200 Sender: +380503996172 Msg Center: +38050000501 Text: uname
Отправка SMS
Текст сообщение передаётся на стандартный поток ввода программы gnokii:
%# echo test from gnokii | gnokii --sendsms +380503996172
Удаление SMS
Для удаления сообщения необходимо указать тип памяти и номер сообщения.
Внутренняя память телефона обозначается кодом ME. Сообщения нумеруются, начиная с 1. После удаления сообщения не сдвигаются, т.е. сообщение под номером 2 остаётся сообщением под номером 2, даже если сообщение 1 удалено.
# gnokii --deletesms ME 1 GNOKII Version 0.6.14 Deleted SMS ME 1
Безуспешная попытка удалить SMS. (SMS после удаления не сдвигается)
%# gnokii --deletesms ME 1 GNOKII Version 0.6.14 DeleteSMS ME 1 failed!(Unknown error - well better than nothing!!)
SMS-шлюз
Рассмотрим, как можно использовать gnokii для управления системой с помощью SMS.
Ниже показан скрипт, который позволяет получать SMS с текстом команды, исполнять её и отправлять результат управления обратно.
Скрипт стоит рассматривать скорее как заготовку, чем как рабочее решение. Для промышленного использования его стоит доработать.
Рекомендуется из соображений безопасности:
- проверять команду на вхождение в заранее предопределённое допустимое множество (исключающее потенциально опасные команды);
- проверять телефон отправителя на вхождение в предопределённый список авторизованных пользователей шлюза.
Рекомендуется из соображений удобства:
- предопределить набор «быстрых» часто использующихся команд (функций), которые можно вызывать без длительного набора на клавиатуре телефона.
Скрипт не выполняет никакой авторизации и аутентификации SMS-сообщений, что представляет большую угрозу для безопасности системы. Не следует воспринимать скрипт как готовое решение — это просто пример, который для использования в рабочих системах необходимо доработать |
smsgate() { sender="`gnokii --getsms ME 1 2> /dev/null |grep Sender | awk '{print $2}'`"; [ -z "$sender" ] || { result="$(gnokii --getsms ME 1 2> /dev/null | sed '1,/^Text:/ d' 2> /dev/null | sh -s)"; echo $result | gnokii --sendsms $sender; gnokii --deletesms ME 1 } }
Пример вызова:
while true do smsgate sleep 1 done
Полная версия скрипта, который будет висеть и обрабатывать входящие SMS-сообщения:
#!/bin/sh smsgate() { sender="`gnokii --getsms ME 1 2> /dev/null |grep Sender | awk '{print $2}'`"; [ -z "$sender" ] || { result="$(gnokii --getsms ME 1 2> /dev/null | sed '1,/^Text:/ d' 2> /dev/null | sh -s)"; echo $result | gnokii --sendsms $sender; gnokii --deletesms ME 1 } } while true do smsgate sleep 1 done
Сравнение SMS-шлюза и управления через SSH-клиент мобильного телефона
Для большинства современных телефонов существует SSH-клиент, позволяющий удалённо регистрироваться на сервере и получать доступ к командному интерпретатору.
Управление через SMS не является заменой управления из SSH-клиента, запущенного на мобильном телефоне.
Следует иметь в виду:
- В обоих случаях уровень мобильности одинаков,
т.е. командный интерпретатор всегда доступен системному администратору;
- SSH-клиент передаёт данные в зашированном виде;
- SSH-клиент использует TCP/IP;
- SSH-клиент требует более мощного телефона;
- SSH-клиент выполняет полноценную аутентификацию;
- SSH-клиент не требует наличия телефона на сервере;
- При использовании SMS-управления известно с какого телефона отправлена команда;
- SMS-управление осуществляет доступ к системе напрямую, без использования TCP/IP.
SMS-управление может пригодиться тогда, когда сервер недоступен по сети. Например, если в результате ошибки в настройке брандмауэра закрыт удалённый доступ к системе, или удалён шлюз-по-умолчанию.
Дополнительная информация
- Gnokii Home — Домашняя страница проекта gnokii
- Documentation — документация на сайте Gnokii
- GnokiiWiki
- Страница Config на GnokiiWiki — рабочие конфигурации для разных телефонов
- gnokii@lilalo — журнал экспериментов с gnokii
Добавить комментарий